Pull to refresh
28
0
Send message

Книга Джошуа Кериевски «Рефакторинг с использованием шаблонов»

Reading time3 min
Views4.3K
Дочитал на днях сабжевую книжку. Вышла она еще в 2008 году (а предыдущее издание и того раньше), но мне она попалась только недавно. По идее, читать ее надо было бы после книги Фаулера «Рефакторинг. Улучшение существующего кода», на которую Кириевски постоянно ссылается, но до Фаулера я пока не добрался, хотя это и не особо затруднило чтение. Вторая книга, которую лучше всего прочитать заранее, это «Приемы объектно-ориентированного проектирования. Паттерны проектирования» банды четырех.

Суть книги «Рефакторинг с использованием шаблонов» состоит в том, что в книге автор собрал 27 довольно сложных рефакторингов, большинство которых предназначены для того, чтобы как можно более безболезненно ввести в архитектуру программы паттерны, описываемые в книге банды четырех. Как пишет в начале Кириевски, часто он начинает программировать без использования паттернов до тех пор пока этот участок кода не надо расширять, тогда он принимается за рефакторинг. Правда, в книге есть еще один рефакторинг, который наоборот избавляет код от использования синглтонов (автор называет болезнь, когда используют синглтоны по любому поводу, синглтонизмом и предлагает открыть общество анонимных синглтоников).
Читать дальше →
Total votes 66: ↑57 and ↓9+48
Comments26

Мы писали, мы писали или что делать когда нас настигает туннельный синдром

Reading time12 min
Views323K
Если вы читаете эти строки, то будет вполне естественно предположить, что вы проводите за компьютером по крайней мере несколько часов в день, а то и больше. Такой режим работы привносит с собой достаточно сильную нагрузку на наши руки, которая может вызвать боли в кистях, запястьях и пальцах. Такие боли вызваны так называемым «туннельным синдромом» (синдромом карпального канала, кистевым туннельный синдром, carpal tunnel syndrome) — хроническим заболеванием.

В этой статье мы постараемся понять причины туннельного синдрома, возможные пути лечения и способы предупреждения этого нежелательного явления. Данная статья будет содержать достаточно много субъективных отступлений от формальных определений и формулировок, которые доступны на тех или иных медицинский сайтах, поскольку проводя за клавиатурой значительное количество времени за последние восемь лет, я вкусил последствия туннельного синдрома во всех его проявлениях.

Как развивается туннельный синдром и что мы при этом чувствуем


Итак, что же порождает это неприятное явление? Карпальный (туннельный) синдром вызывается сдавливанием нерва кисти (срединного нерва), который проходит в специальных каналах, образованных костями и связками. Естественно, при сдавливании нерва мы ощущаем боль, которая может чувствоваться в суставе кисти, но не только в нём. Сейчас мы пройдёмся по всем этапам обсуждаемого синдрома и постараемся связять физиологические процессы с тем, что мы можем ощущать при работе за компьютером.

Читать дальше →
Total votes 136: ↑131 and ↓5+126
Comments112

Как не быть обманутым злыми буратинами

Reading time8 min
Views13K

Уж сколько раз твердили миру,
Что лесть гнусна, вредна; но только все не впрок,
И в сердце льстец всегда отыщет уголок.
«Ворона и Лисица» (1807) И. А. Крылов
1807 год, вдумайтесь! 1807, 200 лет назад!F

Небольшие инструкции по материальным взаимоотношениям.


Для всех обиженных опсосами, банками, сервис центрами и прочими злыми буратинами.
Читать дальше →
Total votes 210: ↑201 and ↓9+192
Comments210

Курсы этичного хакинга и тестирования на проникновение

Reading time5 min
Views71K

Курсы этичного хакинга и тестирования на проникновение.


Если вы увлекаетесь информационной безопасностью и хотите усовершенствовать свои навыки в короткое время — предлагаем ознакомиться с обновленными программами обучения в области практической ИБ от Pentestit.

Разрабатывая уникальные по своему формату и методике обучения курсы этичного хакинга: «Zero Security: A» (начальная подготовка) и «Корпоративные лаборатории» (профессиональная подготовка), мы стараемся сделать обучение не только эффективными, но и удобными. Основное отличие программ обучения заключается в том, что первая рассчитана на базовую подготовку в области этичного хакинга, а вторая — на профессиональную подготовку не только этичного хакинга, но и построения эффективных систем ИБ. В любом случае, даже опытные специалисты, посетившие первую программу, открывают для себя что-то новое, не говоря уже о «Корпоративных лабораториях», включающих материал, по уровню сравнимый с докладами на профессиональных хакерских конференциях. Кроме этого, каждый набор пополняется новым материалом, что позволяет передать специалистам, проходящим обучения, наиболее актуальную на момент обучения информацию.

Уникальность программ обучения заключается в симбиозе формата обучения (полностью дистанционное, не требующее отрыва от работы и учебы), качества материала и специализированных ресурсов, на которых производится обучение.


Читать дальше →
Total votes 58: ↑49 and ↓9+40
Comments17

Замолвим слово об отладке и профилировании [PHP]

Reading time5 min
Views39K
Все идет от лени. Вы получили чужой очень большой проект в котором нужно сделать небольшие правки, или же написали скрипт и сразу не очевидно, что в нем еще требует оптимизации. Как быть? Читать и анализировать код, выводить каждый шаг на экран или в файл (var_dump() и т.д.) не всегда эффективно, ведь можно воспользоваться средствами отладки, которых на сегодняшний день очень много. Кратко перечислю часто встречающиеся…
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments7

Что такое Томита-парсер, как Яндекс с его помощью понимает естественный язык, и как вы с его помощью сможете извлекать факты из текстов

Reading time6 min
Views88K
Мечта о том, чтобы машина понимала человеческий язык, завладела умами еще когда компьютеры были большими, а их производительность – маленькой. Главная проблема на пути к этому заключается в том, что грамматика и семантика естественных языков слабо поддаются формализации. Кроме того, от языков программирования их отличает присутствие многозначности.

Конечно, мечта о полноценной коммуникации с компьютером на естественном языке пока еще далека от полноценной реализации примерно настолько же, как и мечта об искусственном интеллекте. Однако некоторые результаты есть уже сейчас: машину можно научить находить нужные объекты в тексте на естественном языке, находить между ними связи и представлять необходимые данные в формализованном виде для дальнейшей обработки. В Яндексе уже достаточно давно применяется такая технология. Например, если вам придет письмо с предложением о встрече в определенном месте и в определенное время, специальный алгоритм самостоятельно извлечет нужные данные и предложит внести ее в календарь.

image

Вскоре мы планируем отдать эту технологию в open source, чтобы любой мог пользоваться ей и развивать ее, приближая тем самым светлое будущее свободного общения между человеком и компьютером. Подготовка к открытию исходных кодов уже началась, но процесс этот не такой быстрый, как нам бы хотелось, и, скорее всего, продлится до конца этого года. За это время мы постараемся как можно больше рассказать о своем продукте, для чего запускаем серию постов, в рамках которой расскажем об устройстве инструмента и принципах работы с ним.

Называется технология Томита-парсер, и по большому счету, любой желающий может воспользоваться ей уже сейчас: бинарные файлы доступны для скачивания. Однако прежде чем пользоваться технологией, нужно научиться ее правильно готовить.
Читать дальше →
Total votes 154: ↑148 and ↓6+142
Comments78

Machine Learning. Курс от Яндекса для тех, кто хочет провести новогодние каникулы с пользой

Reading time8 min
Views264K
Новогодние каникулы – хорошее время не только для отдыха, но и для самообразования. Можно отвлечься от повседневных задач и посвятить несколько дней тому, чтобы научиться чему-нибудь новому, что будет помогать вам весь год (а может и не один). Поэтому мы решили в эти выходные опубликовать серию постов с лекциями курсов первого семестра Школы анализа данных.

Сегодня — о самом важном. Современный анализ данных без него представить невозможно. В рамках курса рассматриваются основные задачи обучения по прецедентам: классификация, кластеризация, регрессия, понижение размерности. Изучаются методы их решения, как классические, так и новые, созданные за последние 10–15 лет. Упор делается на глубокое понимание математических основ, взаимосвязей, достоинств и ограничений рассматриваемых методов. Отдельные теоремы приводятся с доказательствами.



Читает курс лекций Константин Вячеславович Воронцов, старший научный сотрудник Вычислительного центра РАН. Заместитель директора по науке ЗАО «Форексис». Заместитель заведующего кафедрой «Интеллектуальные системы» ФУПМ МФТИ. Доцент кафедры «Математические методы прогнозирования» ВМиК МГУ. Эксперт компании «Яндекс». Доктор физико-математических наук.
Содержание и видео всех лекций курса
Total votes 172: ↑166 and ↓6+160
Comments47

Отборные комментарии хабратопиков

Reading time10 min
Views4.4K

Вступление


Хабр мной любим не только за свои посты, но и за комментарии к ним. К некоторым темам набирается слишком много комментариев, поэтому я быстро прокручиваю страницу в поисках самых высокорейтинговых. Чтобы повысить эффективность этого процесса, я написал букмарклет — JavaScript-код, сохраняемый как браузерная закладка (Вики). Нынче же считаю своим долгом поделиться им с сообществом.

Букмарклет



Всё просто. Вы добавляете в закладки страницу, адрес которой выглядит следующим образом:
Читать дальше →
Total votes 29: ↑20 and ↓9+11
Comments15

«Новости по теме» с помощью PHP, phpmorphy и MySQL

Reading time4 min
Views13K
Хочу поделиться методом определения «похожих» записей. Думаю, будет полезно для блогов или новостных ресурсов.
Цель данного поста показать принцип, имплементация может быть не совсем комильфо, так как автор не проф. программист, а любитель.

Читать дальше →
Total votes 16: ↑11 and ↓5+6
Comments17

Map-Reduce на примере MongoDB

Reading time5 min
Views62K
В последнее время набирает популярность семейство подходов и методологий обработки данных, объединенных общими названиями Big Data и NoSQL. Одной из моделей вычислений, применяемых к большим объемам данных, является технология Map-Reduce, разработанная в недрах компании Google. В этом посте я постараюсь рассказать о том, как эта модель реализована в нереляционной СУБД MongoDB.

Что касается будущего нереляционных баз вообще и технологии Map-Reduce в частности, то на эту тему можно спорить до бесконечности, и пост совершенно не об этом. В любом случае, знакомство с альтернативными традиционным СУБД способами обработки данных является полезным для общего развития любого программиста, так же как, к примеру, знакомство с функциональными языками программирования может оказаться полезным и для программистов, работающих исключительно с императивными языками.

Нереляционная СУБД MongoDB представляет данные в виде коллекций из документов в формате JSON и предоставляет разные способы обработки этих данных. В том числе, присутствует собственная реализация модели Map-Reduce. О том, насколько целесообразно применять именно эту реализацию в практических целях, будет сказано ниже, а пока ограничимся тем, что для ознакомления с самой парадигмой Map-Reduce эта реализация подходит как нельзя лучше.

Итак, что же такого особенного в Map-Reduce?
Читать дальше →
Total votes 66: ↑60 and ↓6+54
Comments8

Золотая и кремниевая лихорадки — что общего?

Reading time2 min
Views80K
Со времен золотой лихорадки мало что изменилось в оценке человеком высокорисковых предприятий. И вот, полтораста лет спустя, всё в той же Калифорнии теперь находится эпицентр кремниевой лихорадки.


На фото: Сан-Франциско XIX век и в наше время.

Цель поста — немного развлечь сурового хабровчанина и взглянуть на бум стартапов через призму истории, иллюстрируя схожие черты старыми и новыми фотографиями. Возможно, что осознав цикличность, мы будем более реалистично смотреть на самих себя и на будущие перспективы.
Читать дальше →
Total votes 180: ↑164 and ↓16+148
Comments31

Как стать миллионером в AppStore или немного формул про продвижение и продажи. Часть 1

Reading time5 min
Views105K

Схема успеха



Джон, мы потеряли два листа математических выкладок! Что делать?
Как обычно, Билл… напиши: «отсюда с очевидностью следует…»


image

Чтобы прочитать некраткую сопроводительную записку к схеме – добро пожаловать под кат.

Читать дальше →
Total votes 130: ↑119 and ↓11+108
Comments35

Готовим продвинутые CGridView

Reading time6 min
Views40K
Данный пост будет интересен тем кто начинает знакомится с Yii framework, то есть пользователям от начального до среднего уровня знаний данного фреймворка, а так же тем кто любит похоливарить на тему какой из фреймворков круче.
Читать дальше →
Total votes 3: ↑2 and ↓1+1
Comments8

Модификация в БД табличных или множественных полей документов

Reading time10 min
Views5.4K
Часто в проектах требуется обновление в БД множественных полей каких-либо документов. Наверное существуют готовые решения, но вбив в гугл «изменение множественных свойств документов», «обработка множественных полей», «обработка табличных полей» и т.д., я не нашел никакого решения, поэтому решил написать свое и заодно описать его в этой статье.

Читать дальше →
Total votes 2: ↑2 and ↓0+2
Comments4

Gearman — сервер очередей: использование в проектах на PHP

Reading time9 min
Views81K
Не так давно была замечательная статья, описывающая общие принципы работы с сервером очередей Gearman. Мне бы хотелось продолжить материал, дополнив его некоторыми деталями практического применения, а именно:
— установка и управление сервером
— управление очередью — что возможно и как
— PECL и PEAR php-расширения для работы с Gearman
— мониторинг сервера
— примеры кода
— передача данных порциями
— организация параллельных вычислений в PHP

Интересно? Прошу под кат
Читать дальше →
Total votes 72: ↑66 and ↓6+60
Comments51

Алгоритмизация творчества: создание интересной рекламы без креатива

Reading time10 min
Views34K

Предвидя негодование по поводу использования слова «креатив», спешу заметить, что в контексте этой статьи трудно использовать синоним. Честно.
Основная мысль — алгоритмизировать можно абсолютно любой мозговой процесс. Я взял рекламу в качестве примера для доказательства потому, что:
  1. Понять и оценить интересную рекламу может каждый человек;
  2. Реклама сильно завязана на творчестве и нестандартном мышлении, которое обычно представляется хаотичным и слабо поддающимся алгоритмизации;
  3. Я просто очень сильно люблю рекламу. И алгоритмы.

Перед тем, как начать, было бы нечестным не упомянуть о том, что в алгоритме все же есть небольшие хитрости. Понявшему их — плюсов в карму. Итак.
Читать дальше →
Total votes 51: ↑45 and ↓6+39
Comments107

Не слушайте их

Reading time1 min
Views874
Не слушайте их, когда они говорят, что ваша идея бесперспективна.
Когда говорят, что идея должна быть Идеей.
Эти перфекционисты, мой бог, они говорят вам, что лучше потратить год на отладку.
Они говорят, что пользователи капризны и не примут проект с недоработками.
Вы предпочитаете слушать их? Тех, которые из-за своего перфекционизма сами ничего не запустили?
Это лучшая отмазка для тех, кто не хочет пытаться – «Либо надо сделать идеально, либо не делать.»
Идеал недостижим. Нет предела совершенству. Проект всегда будет недоработан. Такова природа бытия.
Поэтому, не тяните. Не тяните с запуском стартапа.
Энтузиазм пропадает. Появляются новые идеи. Меняются планы.
Просто запускайте, поглощайте критику, улучшайте. Главное – это готовая основа.

Не слушайте их. Слушайте себя.
Total votes 250: ↑164 and ↓86+78
Comments46

Система уведомлений о событиях на сайте (на примере аудиоплеера ВКонтакте)

Reading time2 min
Views37K
Приветствую.

Думаю, многие, кто имеет аккаунт ВКонтакте и слушает там музыку, замечали, что если на одной вкладке включить трек, а затем уже на другой включить второй, первый трек уйдет в паузу. Примерно то же самое происходит с различными уведомлениями (новое сообщение, ответ на комментарий/запись и т.д.) — отображается оно только в активной вкладке. Кому интересно как это работет и каким образом сделать подобное у себя на сайте, милости просим за хабракат.
Читать дальше →
Total votes 94: ↑90 and ↓4+86
Comments38

jQuery-плагины для удивительной web типографики

Reading time2 min
Views35K
Добрый час, Хабр.
Наткнулся на интересную статью (на английском языке) с подборкой плагинов jQuery для работы с типографикой.
Кому интересно познакомиться с ними, добро пожаловать под кат, перевожу статью для Вас.

Затравка

Типографика является очень важной частью дизайна сайта. Однако ею часто пренебрегают. В этой статье собраны удивительные JQuery-плагины для полного контроля типографики на вашем сайте.
Читать дальше →
Total votes 91: ↑85 and ↓6+79
Comments13

Жизнь в поисковых запросах: немного о связи между «свадьбой» и «платьем»

Reading time3 min
Views8.7K
С рождением Интернета и поисковых систем появились новые возможности для изучения человеческого поведения. Каждый раз, когда пользователь делает запрос в поисковой строке, он делится крупицей информации о своей жизни и интересах.

Обобщая запросы от миллионов людей, мы можем выявлять тенденции, динамику и некоторые взаимозависимости при изменении интересов у определённых групп людей.

Подобные исследования обеспечивают простор как для деятельности учёных, так и для роста эффективности работы поисковых систем. Например, анализируя взаимозависимости запросов пользователей в демографическом срезе, можно улучшить поисковые подсказки. Подобная технология уже используется в саджестах от Поиска@Mail.Ru.

Разработчики поисковых систем уделяют много внимания анализу логов поисковых запросов. Но часто такие исследования ограничиваются анализом пользовательских запросов в рамках одной поисковой сессии (обычно длящейся до 30 минут). Или же в процессе анализа больше внимания уделяется частоте запросов и обобщённым данным об их популярности. При этом, как правило, исследователи рассматривают эту информацию в краткосрочном срезе. Однако человеческая жизнь многогранна и интересы людей со временем меняются. Поэтому именно ретроспективный долгосрочный анализ логов поисковых запросов открывает по-настоящему богатые возможности для исследований.

Читать дальше →
Total votes 46: ↑34 and ↓12+22
Comments14

Information

Rating
Does not participate
Registered
Activity