Pull to refresh
16
0
Arekus @Arekus

User

Send message

Уехать жить в село

Reading time5 min
Views5.8K

Есть у меня мечта. Уехать из города (живу в Днепропетровске) в село на ПМЖ. Друзей всех я этой темой задолбал уже наверное, хотя есть товарищи, разделяющие эту идею ;) Решил поделиться с интернет-сообществом, и, возможно, найти единомышленников. Буду рад критике, предложениям, советам.


Читать дальше →
Total votes 194: ↑185 and ↓9+176
Comments349

Азбука хорошего разработчика. Книжки для чтения

Reading time2 min
Views3.4K
Часто разработчиков нужно направить, поскольку они не имеют понятия о том, что им нужно изучить для повышения своего уровня. В этой заметке я опишу источники знаний, в моем понимании, необходимые для этой цели. Пишу в порядке, в котором я их предлагаю читать.

Паттерны проектирования

Википедия — там, в принципе, на хорошем уровне все описано и приведены примеры на разных языках.
Базовая книга – классика:
«Приемы объектно-ориентированного проектирования. Паттерны проектирования» — читал книгу давно, и раза 3. Вам того же советую. Даст возможность понимать большое количество терминов, произносимых другими разработчиками.

Рефакторинг

«Рефакторинг. Улучшение существующего кода» — вероятно, эта книга сделала революцию в написании кода. Читается быстро и интересно. Методы рефакторинга должны отложиться в голове до конца жизни. Ваш код отныне будет лучше. В книге есть упоминание про юнит тестинг.
Читать дальше →
Total votes 73: ↑72 and ↓1+71
Comments66

Ко-воркинг с точки зрения предпринимателя

Reading time1 min
Views710
За тему — респект. Рано или поздно вопрос должен был всплыть. Но, кто-нибудь рассматривал всё это с юридической точки зрения, считал финансовую модель?

У меня есть средства и я могу себе позволить снять офис на двадцать человек на год «в зелёной части города». Но что нам делать с законами? С налогами? Люди-то неоформленные. К тому же незнакомые между собой. Отличный повод для злоумышленника — вписаться в коллектив и что-то украсть — от новенькой мышки до паролей на чей-то хостинг. Отличная возможность вести нелегальную деятельность — от распространения порнографии до фашистской агитации.

Чья техника? Или каждый в силах ежедневно таскаться с ноутбуком? Как осуществлять банальную физическую защиту, как ответить на претензии в случае кражи (вспомните Шпака из «Иван-Васильевича», сколько именно магнитофонов у него украли). Вопросов — много. Если решить их все, то фрилансерская тусовка в зеленой части города превратится в обычный офис обычной IT-конторы.
Total votes 36: ↑32 and ↓4+28
Comments66

Секрет воспитания умных детей (часть 1)

Reading time6 min
Views6.8K
Совет: Не говорите вашим детям, что они умны. Исследования на протяжении трех десятилетий говорят нам, что акцент на усилии, а не на возможностях или интеллекте, является ключом к успеху в школе и жизни.

Перевод статьи в Scientific American

Будучи блестящим учеником, Джонатан без проблем учился в начальной школе. Он легко справлялся с заданиями и получал пятерку за пятеркой. Джонатан удивлялся, почему некоторым его одноклассникам приходилось стараться куда больше, и родители сказали ему, что у него есть особый дар. В седьмом классе, однако, Джонатан внезапно потерял интерес к школе, отказываясь делать домашние задания и готовиться к тестам. Из-за этого его оценки стремительно ухудшались. Его родители пытались сохранить его веру в себя, убеждая его, что он очень умен. Но их попытки не смогли мотивировать Джонатана (на самом деле он собирательный образ, рисованный с нескольких детей). Он продолжал утверждать, что школьные задания скучны и бессмысленны.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments59

Google Thumbnail: Получаем миниатюры сайтов

Reading time5 min
Views8.9K
Думаю все знают что в поиске Google можно предварительно просмотреть сайт открыв его превью.

Сегодня поделюсь с вами одним из методов получения данного изображения.
Читать дальше →
Total votes 69: ↑60 and ↓9+51
Comments32

Принцип цикады и почему он важен для веб-дизайнеров

Reading time6 min
Views229K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →
Total votes 696: ↑682 and ↓14+668
Comments119

SVN hooks: изменение комментария к ревизии

Reading time3 min
Views21K
Не секрет, что по умолчанию изменение текста комментария к ревизии в SVN не разрешено. Пост предназначен для тех, кто хочет сделать это возможным, но не знает как.
заодно почитаем про хуки
Total votes 30: ↑25 and ↓5+20
Comments19

О структурном программировании

Reading time2 min
Views14K
Многие в комментариях к посту об операторе goto высказывали одно и то же мнение, которое звучит примерно так: «За n лет написания программ мне ни разу не понадобился goto, и использовать его в будущем я тоже не собираюсь». И они абсолютно правы, уже давно доказана теорема о структурировании, в которой говорится, что любая простая программа функционально эквивалентна структурированной программе составленной с использованием функций и предикатов исходной программы, а также с использованием дополнительного счетчика. Доказательством является алгоритм составления той самой структурированной программы:
  1. пронумеровать все узлы схемы, при этом порядок обхода произвольный;
  2. пронумеровать все дуги схемы следующим образом: выходной дуге схемы припишем номер 0, всем остальным дугам присвоим номер вершины, в которую данная дуга входит;
  3. для каждого функционального узла исходной программы, имеющего номер i и выходную дугу j, составить новую простую последовательную программу Gi с номером входной дуги i
  4. для каждого предикатного узла с номером i составить новую простую программу
  5. построить программу типа while do с do-частью в виде структры, проверяющей значения L.

Читать дальше →
Total votes 73: ↑70 and ↓3+67
Comments35

Эффективные совещания

Reading time3 min
Views18K


Итак, мы приходим на работу и, вуаля, через 40 минут назначено совещание (митинг). Тема «Обсудить решение текущих проблем», продолжительность 1 час, в списке приглашенных 8 человек. 40 минут томительного ожидания и мы на месте — здороваемся с коллегами, настраиваемся на конструктивный лад. Появляется организатор, бодренько стартует и… уже через пять минут мы понимаем, что в очередной раз теряем время. Вроде бы, и обсуждаемые проблемы вполне реальны, и присутствует достаточно людей, но совещание неуклонно превращается в бесцельную дискуссию.

Уверен, эта ситуация знакома многим и много написано о том, какими совещания быть не должны. И все же, есть проблемы, которые рискованно решать в одиночку и без совещания не обойтись. Эта статья о том, как в этих случаях потратить свое и чужое время эффективно.
Читать дальше →
Total votes 146: ↑139 and ↓7+132
Comments47

Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

Reading time20 min
Views314K
Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
Вы заказчик. Как убедиться, что работа выполнена качественно?
Как оценить качество вёрстки?

Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

Требования должны были быть такие, что соблюсти их легче, создавая качественную вёрстку, а не говнокод. Я составлял такой чек-лист в течении полутора лет. За последние полгода в него не добавилось ничего. Значит самое главное учтено.

Итак что же это за список?

Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

История обновлений:
  • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
  • 2015/08/10: актуализирован список исключений для CSSLint
  • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
  • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
  • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
  • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
  • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
  • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
  • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
  • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
Total votes 335: ↑318 and ↓17+301
Comments244

Интеграционное тестирование web-приложения с Selenium WebDriver

Reading time6 min
Views36K
Интеграционное тестирование (в отличие от Unit- или модульного тестирования) это тестирование не отдельных атомарных компонентов системы (классов) а результата их взаимодействия между собой в какой-либо среде.

Волею судеб я занимаюсь разработкой своего рода интерфейсного фреймворка заточенного на определенные корпоративные нужды. Среда исполнения фреймворка — браузер, а по сему язык — JavaScript.

О том, как можно Unit-тестировать JavaScript я писал ранее, сейчас же расскажу о процессе интеграционного тестирования, применяемого в команде.
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments22

Настоящие online, offline события

Reading time5 min
Views3.7K
С появлением online, offline событий многие разработчики, особенно мобильных веб-севисов возложили на них большие надежды. Казалось бы online, offline говорят нам когда у пользователя есть доступ к интернету, но на самом деле это далеко не так. Подробности их поведения когда-то давно описал Резиг в своем блоге.



Кратко — online, offline сигнализирует нам, что пользователь вручную переключился в оффлайн либо у него нет ни одного соединения с сетью. Фактически эти 2 события бесполезны в том виде в котором они представлены — я не знаю кто будет вручную переключать таб в режим онлайн/оффлайн, и с сетевыми подключениями тоже все плохо. Ну и, конечно, доисторические бразуеры не знают эти события.

Под катом элегантное и 100% кросбраузерное решение, позволяющее получить настоящие online, offline события.
Читать дальше →
Total votes 38: ↑33 and ↓5+28
Comments40

Текстовый анализатор: распознавание авторства (окончание)

Reading time7 min
Views2.6K
Эта статья об алгоритме распознавания авторства, реализованном в проекте «Текстовый анализатор». В окончании статьи мы рассмотрим, как собираются частотные характеристики, и в общих чертах познакомимся с нейросистемой Хэмминга. (Начало и продолжение).

Структура статьи:
  1. Анализ авторства
  2. Знакомство с кодом
  3. Внутренности TAuthoringAnalyser и хранение текстов
  4. Разбиение на уровни конечным автоматом на стратегиях
  5. Сбор частотных характеристик
  6. Нейросеть Хэмминга и анализ авторства

Дополнительные материалы:
  • Исходники проекта «Текстовый анализатор» (Borland C++ Builder 6.0)
  • Тестирование нейросистемы Хэмминга в Excel'е ([xls])
  • Таблица переходов для КА, разбивающего текст на уровни ([xls])
  • Расчет благозвучия отдельных букв ([xls])
  • Презентация дипломного проекта «Текстовый анализатор» ([ppt])
  • Презентация проекта «Карта благозвучия» ([ppt])
  • Все эти материалы в сжатом виде ([zip], [7z], [rar])


Читать дальше →
Total votes 44: ↑37 and ↓7+30
Comments18

Эволюция юнит-теста

Reading time5 min
Views27K
Много слов сказано о том, как правильно писать юнит-тесты, и вообще о пользе TDD. Потом ещё и какое-то BDD замаячило на горизонте. Приходится разбираться, что из них лучше и между ними какая разница. Может, это и есть причина, почему большинство разработчиков решили не заморачиваться и до сих пор не используют ни того, ни другого?

Коротко: BDD — это дальнейшее развитие идей TDD, стало быть, его и надо использовать. А разницу между TDD и BDD я попробую объяснить на простом примере.

Рассмотрим 3 ревизии одного юнит-теста, который я нашёл в одном реальном проекте.

Попытка номер №1


Первая версия этого юнит-теста была такой:
Читать дальше →
Total votes 88: ↑84 and ↓4+80
Comments68

MongoDB или как разлюбить SQL

Reading time6 min
Views66K
Введение

Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
Читать дальше →
Total votes 129: ↑122 and ↓7+115
Comments99

История развития и оптимизаций одного высоконагруженного ресурса

Reading time5 min
Views14K


Введение

Все началось с того, что я стал системным администратором у одного провинциального Интернет-провайдера. Помимо администрирования различного рода ресурсов, мне в присмотр достался один молодой, но бурно развивающийся ресурс. Ресурс представлял из себя классический LAMP проект. Сайт, на котором генераторами контента являлись обычные пользователи.
* К слову, в то время я ничего не понимал в *nix системах, хоть и все сервера которые мне достались, были именно на нем, разбирался я во всем этом достаточно быстро.

Как обычно бывает с ресурсами, набирающими популярность, железки на которых все крутится, перестают справляться. Ресурс стоял на стареньком двухпроцессорном сервере, на котором крутились практически все сервисы для пользователей. В то время начальство не воспринимало ресурс как нечто стоящее вложений, поэтому, к моему сожалению (а позже – счастью), денег под новую железку мне не выделяли.
Читать дальше →
Total votes 208: ↑198 and ↓10+188
Comments56

Почему тестирование — это тупо и скучно?

Reading time2 min
Views28K
Последние дни всё чаще натыкаюсь на сообщения в блогах и форумах про то, что тестирование — это либо очень скучно, либо тупая работа и т.д.
Что все эти люди делают в тестировании??

Позавчера я тестировала свой небольшой веб-проект.

За 4 часа я завела 25 дефектов.

Я очень радовалась каждой «находке», особенно если в поиске она была нетривиальной. Ещё больше радовалась каждый раз, когда удавалось точно локализовать дефект. Мне действительно нравилось их заводить, стараясь это сделать наиболее понятным способом.

«А что, если?...», «А как проверить?...», «А как бы?...» и т.д. заполняют мозг, который включается на полную мощность.

Если бы мне кто-то предложил в этот момент посмотреть фильм, поиграть в компьютерную игру или сходить в клуб, я бы ему ответила, что занята значительно более интересным занятием! Потому что это действительно очень интересно!

Это захватывает, и время пролетает очень быстро. Это творческая, непростая, ответственная работа, которая увлекает на 100%!

И я задумалась. Кто пишет про «скучно», «рутина» и «тупая работа»? Почему не всем нравится? Постаралась выписать всё, что пришло в голову.
Читать дальше →
Total votes 198: ↑152 and ↓46+106
Comments156

Php + Cache + Tags = phpCacheTag

Reading time5 min
Views2.6K
Однажды, читая Хабр, я наткнулся на пост уважаемого dmitrykoterov про кеш и теги, который мне очень запал в душу. Как-раз тогда я возился с кешем и тоже, как и очень многие, пришёл к выводу, что ему(кешу) очень не хватает нативных тегов, по которым удобно было бы определённые порции кеша рубить одной строчкой. Рубить, не вдаваясь в именования переменных, которые под этими тегами числятся. Странно что осуществлением этой возможности занимаются сторонние разработчики, если говорить о самом популярном у нас memcache.

phpCacheTagВ итоге в свой очередной субботне-воскресный кодо-марафон я решил, всё же, заняться этим вопросом вплотную и написать универсальную библиотеку для любого кешевого бэкенда, будь то memcache или кеширование в файлах на чистом php. Библиотека написалалсь и поселилась на googlecode. Простите за английский, чуть ниже постараюсь исправиться.

Читать дальше →
Total votes 19: ↑12 and ↓7+5
Comments42

Обзор хостингов изображений: читатели рекомендовали ещё 15 сервисов

Reading time10 min
Views15K
После публикации первых 2 статей о 30 хостингах изображений читатели порекомендовали ссылки на ещё более 10 хостингов (14-15), практически каждый из которых стоило рассмотреть. Публикую результаты тестирования 11 хостингов (остальные пришлось отсеять).
(31.03) Добавлены ещё 4 хостинга по результатам после публикации, итого в таблице — 15 хостингов.
Читать дальше →
Total votes 51: ↑43 and ↓8+35
Comments27

Еще раз о времени, деньгах, свободе, здоровье и других ресурсах личности, а также о двух ее половинках

Reading time11 min
Views11K
В продолжение темы: раз, два, три, четыре.

Сразу скажу, что подход к разгорающемуся холивару «время vs. деньги» (а точнее к вопросу управления личными ресурсами), которого я придерживаюсь, позаимствован мной из вебинара, выложенного в записи на сайте datnews.ru, а автор этого сайта скорее всего позаимствовал его у Тима Ферриса или еще какого-нибудь гуру лайф-менеджмента, и в принципе является самоочевидной истиной, которую, однако, почему-то мало кто способен правильно усвоить и использовать.

Вкратце, подход состоит в следующем: у каждого из нас есть набор уникальных ресурсов, которые в процессе нашей жизнедеятельности могут конвертироваться друг в друга (или расходоваться впустую), но возможности этой конвертации ограничены самими имеющимися ресурсами. То есть они конвертируются не прямо пропорционально и даже не с фиксированным процентом затрат (как валюты в обменнике), а в зависимости от доступного в данное время их количества. Правило первое и последнее: если нам остро не хватает какого-нибудь ресурса, мы вынуждены компенсировать его, расходуя непропорционально большие объемы других ресурсов. Следовательно, стратегия оптимального развития заключается в поддержании долгосрочного баланса между разными типами ресурсов, дабы не было необходимости «топить ассигнациями». В краткосрочном периоде наоборот — локальная концентрация выгоднее, чем соблюдение баланса ради баланса, ибо самые актуальные проекты и проблемы не признают никаких расписаний.

Читать дальше →
Total votes 83: ↑57 and ↓26+31
Comments42

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity