Как стать автором
Обновить
76
0
Rumkin @rumkin

Developer and tech writer

Отправить сообщение

BeepTower.com — делиться интересностями с друзьями

Время на прочтение1 мин
Количество просмотров435
image

Простой сервис для того, чтобы посылать интересные ссылки и сообщения друзьям.
Делал для себя, может кому-то еще пригодится.

Как работает?
Заходим на страницу, выделяем заголовок, кликаем букмарклет. В открывшемся окне можно выбрать кому именно отправить (по-умолчанию всем) и дописать что-нибудь от себя.

Раз в сутки скрипт пробегает по списку и отправляет каждому по 1 письму со всеми сообщениями за день (получатели могут отключить посылку писем и активировать публикацию в rss фид, но это для «продвинутых», у меня много друзей про rss даже не слышали :).

Почему?
Была проблема — у меня три десятка друзей, с которыми я хочу делиться интересными ссылками. Они используют разные IM (ICQ, Jabber), они состоят в разных социальных сетях.

Посылать ссылку каждому по отдельности не удобно, да и получать по 5 писем в день не очень прикольно. К тому же может сильно отвлекать.

Читать дальше →
Всего голосов 32: ↑26 и ↓6+20
Комментарии37

Sendmail-заглушка для Linux

Время на прочтение2 мин
Количество просмотров38K
Не так давно встала задача, установить заглушку для sendmail, дабы письма из PHP не отсылались на ложные адреса (при тестинге) или просто не возникала ошибка, а складывались аккуратно в папку. Аналогично тому, как это делает Денвер.
Читать дальше →
Всего голосов 47: ↑43 и ↓4+39
Комментарии36

Сервис конвертации favicon доменов в png (с исходниками:)

Время на прочтение2 мин
Количество просмотров1.4K
Недавно я писал про поиски способов получения иконок доменов в нормальном формате (т.е. png) и о желании написать свой отдельный сервис для этого, поскольку общедоступные конверторы от Google и Yandexа обладают существенными недостатками.

И вот он готов.
хабракут
Всего голосов 37: ↑35 и ↓2+33
Комментарии26

Делаем Liquid Resize своими руками

Время на прочтение12 мин
Количество просмотров16K
Вы наверное уже слышали о технологии масштабирования Liquid Resize, которая учитывает содержимое изображения. Если вам интересно как оно все работает и как можно реализовать все это самому, то читайте далее (осторожно, много рисунков).


(НЛО прилетело и растянуло этот рисунок здесь)
Читать дальше →
Всего голосов 230: ↑227 и ↓3+224
Комментарии125

DSL и динамические вкусности Ruby

Время на прочтение5 мин
Количество просмотров13K
В этой статье я проиллюстрирую основные возможности Ruby для построения Domain Specific Languages(DSL). DSL, это небольшие, узкоспециализированные языки для решения конкретных задач. В отличие от языков общего назначения, таких как C++ или Java, DSL обычно очень компактны, и обладают высокой выразительностью в контексте решаемой задачи.

Различные DSL широко распространены в библиотеках и фреймворках для Ruby. Например в Rails DSL используются для создания миграций.

А теперь, давайте посмотрим какие возможности Ruby предоставляет для построения DSL
Читать дальше →
Всего голосов 48: ↑44 и ↓4+40
Комментарии43

Как быстро начать и эффективно продолжить писать расширение для лисы

Время на прочтение1 мин
Количество просмотров1.1K

Обычно цикл разработки таков:


1) вносим изменение в исходники,
2) перепаковываем исходники в *.xpi (скриптами),
3) переключаемся на лису,
4) Ctrl+O, выбираем полученный выше *.xpi,
5) появляется диалог установки, ждём 4 секунды,
6) жмём «Install»,
7) потом «Restart Firefox» и смотрим что изменилось.

Стало страшно? Тогда…
дальше про то как userChrome.js позволяет обойтись без перезагрузки и сократить количество шагов до двух
Всего голосов 48: ↑43 и ↓5+38
Комментарии17

Clear или overflow:hidden — очистка всего потока или создание контекста форматирования?

Время на прочтение2 мин
Количество просмотров35K
clear и overflowСвойство clear со значениями left, right, both действительно очищает поток в отличие от overflow со значеним hidden, которое создаёт отдельный контекст форматирования для выбранного элемента, тем самым локализуя действие свойства float внутри элемента к которому применён.

Читать дальше →
Всего голосов 130: ↑120 и ↓10+110
Комментарии75

Абсолютный минимум для новой жизни

Время на прочтение2 мин
Количество просмотров863
Психологи утверждают, что молодой, энергичный и амбициозный человек (а других вряд ли станут рассматривать на должность менеджера проекта) “выдерживает” на одном рабочем месте не более 5-6 лет. А для некоторых психологических типов этот срок составляет 2-3 года. Практический опыт чаще всего подтверждает эту позицию. Далее менеджеру проектов требуются новые перспективы, причем далеко не только финансовые.

Переход менеджера на новую работу — серьезный поступок, требующий взвешенного решения и тщательной подготовки. Ведь, как правило, есть что терять на том месте, где вы уже работаете. Одновременно, на новом месте всегда ждет риск. Работа менеджера проекта сродни работе футбольного тренера. Так же как и в футболе, в провале проекта будет виноват его менеджер, какими бы “объективными” ни были обстоятельства поражения. Обстоятельства надо изучать заранее и обсуждать их со своим, пока еще будущим руководством.

Главное что надо понять, прежде чем согласиться заняться проектом, это что от вас хотят и что вы сможете сделать. Понять все на 100% вряд ли удастся, но разобраться необходимо. В конце концов, представляя объем работы, легче торговаться изза зарплаты и бонусов. Предлагаю свой список, “Абсолютный минимум” шагов, которые надо предпринять до того, как сказать “да” и выйти на работу в новую команду. Ответьте “да” или “нет” на следующие вопросы:

1. Представляете ли вы себе структуру компании?
2. Знаете ли кому будете подчиняться и с кем будете взаимодействовать внутри компании?
3. Одинаково ли понимаете с вашим будущим руководством роль менеджера проекта?

4. Видит ли ваше будущее руководство перспективы ваших проектов через год?
5. Владеете ли вы методами и инструментами управления проектами, которые применяются в компании?
6. Знаете ли вы как принято документировать проект в компании?
7. Для каждого порученного вам проекта существует документация?
8. Для каждого порученного вам проекта существует план работ?
9. Существует ли отдел контроля качества?
10. Ознакомились ли вы со списком ошибок по вашим проектам в системе багтрекинга?
11. Ознакомились ли вы с резюме каждого участника вашей будущей команды?
12. Знакомы ли вы с лидером вашей команды?
13. Ознакомились ли вы со списком требований к проектам?
14. Ознакомились ли вы с общей архитектурой каждого из ваших будущих проектов?
15. Знаете ли вы заказчика вашего проекта?
16. Существует ли представитель заказчика?

17. Знаете ли вы кто был предыдущим менеджером проекта?
18. Знаете ли вы кто должен передать вам дела по проектам?

Список получился длинным, но я скорее соглашусь добавить еще пунктов, чем что то выкинуть. На все вопросы можно ответить “да” или “нет” и подсчитать количество положительных ответов. Сколько вам нужно положительных ответов чтобы согласиться на новые проекты — выбирайте сами. Тут многое зависит от индивидуального темперамента и от предлагаемой компенсации. Да много еще от чего зависит.
Чтобы ответить на все вопросы, надо серьезно поработать и изрядно потратить времени. Не всегда это время есть, особенно когда на переговоры приходится ездить в другой город. Если вы получите утвердительный ответ на все 18 вопросов, вы имеете отличные шансы на успех. Вопросы 2,3, 13, 15, 16 являются наиболее критичными, и, в случае отрицательного ответа хотя бы на один из них, надо очень осторожно давать согласие на новую работу. В этом случае вы исключительно рискуете.

Удачного старта!
Всего голосов 42: ↑33 и ↓9+24
Комментарии31

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

Время на прочтение1 мин
Количество просмотров3.7K
Компания Galois, занимающаяся созданием и разработкой различного ПО, недавно объявила в своем блоге о том, что криптографический язык программирования Cryptol, изначально закрытый, теперь доступен любому желающему.

Созданный для Агенства Национальной Безопасности США, Cryptol является предметно-ориентированным языком программирования и служит инструментом создания дизайна, реализации и верификации криптографических алгоритмов. Разработка не является новой — на Криптоле было написано несколько крупных проектов, а в настоящем времени ведется разработка в корпорации Rockwell Collins.

Cryptol портирован под Windows, Mac и Linux и доступен для скачивания в триальной, ознакомительной, версии. Она включает в себя интерпретатор, документацию и примеры. А вот для того, чтобы получить полную версию — придется написать разработчикам и убедить их в необходимости выдать вам полнофункциональный Cryptol.

Оригинальный пост в блоге.

Galois Blog via Slashdot
Всего голосов 26: ↑24 и ↓2+22
Комментарии21

Поиграем в CacheGraph?

Время на прочтение3 мин
Количество просмотров689
imageПредположим у Вас есть сайт. Предположим вы его оптимизировали по самое «немогу», но всеравно хочеться больше.
Лично мне хотелось, но долгое время не получалось.
Когда я победил тормознутость базы кэшированием запросов, тормознутость блоков — кэшированием блоков, а целые страницы кэшировать я не мог…
Cайт конечно стал работать много быстрее, но начал тормозить уже… мемкэшед?
Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии24

Описание работы блока ФИО

Время на прочтение3 мин
Количество просмотров13K
Я занимаюсь разработкой форм ввода персональных данных. Для удобства работы пользователей и увеличения скорости ввода данных (а та же сокражения расходов на перепроверку введенных данных) был разработан метод обработки блока ФИО.

image

Блок состоит из следующих полей (в зависимости от специфики полей может быть меньше): фамилия, имя, отчество, дата рождения, пол, семейное положение. Переход по полям последовательный.

Логика функционирования блока «Личные данные»
После ввода фамилии, определяется пол по окончанию фамилии:
Мужской: 'ОВ', 'ЕВ' ,'ИН' ,'ЫН', 'ОЙ', 'ЦКИЙ', 'СКИЙ', 'ЦКОЙ', 'СКОЙ', 'ЦКИЙ'.
Женский: 'ОВА', 'ЕВА', 'ИНА', 'АЯ', 'ЯЯ', 'ЕКАЯ', 'ЦКАЯ'.

ФИО должны вводится в именительном падеже!
1. Если удалось определить пол по фамилии то в следующее поле «Имя» подгружаются исключительно мужские имена-справочник мужских имен(если пол мужской определился), женские имена(аналогично)-женская фамилия. В случае если фамилия оказалсь бесполой (Кравчук), то подгружаются оба справочника мужской и женский.
2. В поле «Имя», в зависимости от подгруженного справочника по первым буквам происходит подстановка полного имени, при нажатии на «Enter» происходит переход к следующему полю «отчество». Имеются также справочники отчеств, значения в поле подставляются аналогично предыдушему пункту. В случае когда введено не справочное имя(либо имя которое не содержится в справочнике), т.е. не возможно определить пол, происходит проверка опять же фамилии, и по ней происходит подгрузка значений в поле «отчество», и в случае когда не по имени не по фамилии невозможно определить пол, происходит подгрузка обоих справочников. Если имя является не справочным, то оно подсвечивается красным цветом, и отмечается в базе метка о несправочном значени, свидетельствующая о том что запись нужно повторно проверить на корректность.
3. Отчество. После ввода проверяется также на справочное значение и помечается так же как имя.
4. Форма проставляет пол автоматически при вводе информации, если есть уверенность в этом. Т.е.:
4.1. Фамилия мужская или женская, при этом имя и отчество из справочника мужские или женские – форма проставляет пол. Вам требуется обратить внимание, что пол проставлен верно.
4.2. Фамилия бесполая, имя и отчество справочные, если имя и отчество соответствуют одному полу, форма проставляет пол.
4.3. Фамилия + имя если отчество пустое или по нему невозможно определить пол.
4.4. Фамилия + отчество, если имя пустое или по нему невозможно определить пол.
5. Форма НЕ проставляет пол автоматически при наличии одной только фамилии (имя и отчество – инициалы):
5.1. Иванова И.И. – форма НЕ проставит пол, т.к. тут может быть ошибка – родительный падеж, в этом случае форма оставляет пол пустым, и Вы должны проставить его вручную с анкеты.

После заолнения остальных полей, происходит выход из блока и заключительная проверка:

6.Форма спрашивает о соответствии ФИО и пола один раз, при выходе из блока, при повторном обращении к блоку сообщения выводиться не будут для данной анкеты. При этом анализируются сочетания:
6.1. Окончание фамилии и пол (Иванова – мужской, форма спросит «уверены ли?»).
6.2. Неверные совпадения Фамилия + Имя / Фамилия + Имя + Отчество (Иванова Алексей, или Иванов Алексей Ивановна и т.д. – форма спросит).
6.3. Неверные совпадения ФИО – пол (при наличии полного ФИО), аналогично п. (6.1) – Иванова Алексей женский – форма спросит.
7. В случае, если пол не проставлен – форма при выходе из блока спросит, можете ли вы проставить пол?

Хотел разместить в разделе «Эти пользовательские интерфейсы», но у меня недостаточно кармы.
Всего голосов 107: ↑66 и ↓41+25
Комментарии142

RE: Идея на тему больших картинок и ограничений хостингов

Время на прочтение3 мин
Количество просмотров570
Этот пост является ответом на идею изложенную в этом топике

Суть: вы хозяин сайта и вам нужно ресайзнуть изображение заливаемое юзером, но у вас не достаточно для этого возможностей.
Решение: Мы делаем для вас «проксик» который все делает за вас и отдает вашему скрипту результат.
Читать дальше →
Всего голосов 36: ↑27 и ↓9+18
Комментарии27

Улучшение для дерева коментариев хабра

Время на прочтение2 мин
Количество просмотров752
Некоторые статьи вызывают оживлённые дискусии с сотнями коментариев, ветки которых занимают по два экрана на 1280х1024.

Например, вот на этом снимке экрана легко запутаться в уровнях коментариев.

Мне хотелось чтобы дерево коментариев было оснащено такими вертикальными линиями с минусиками к которым мы привыкли во многих современных редакторах. И я это сделал на выходных.

Сравните со снимком экрана после.







Далее: описание принципа работы, инструкция по установке
Всего голосов 158: ↑139 и ↓19+120
Комментарии45

альтернатива HTML5 прямо сейчас

Время на прочтение2 мин
Количество просмотров5.7K
Пока все обсуждают HTML5 я тут пошевелил извилинами и придумал, в общем-то, тривиальную, но полезную концепцию и решение всех ваших проблем с языками разметки. Оно работает уже сейчас в Mozilla, WebKit и Opera.

Для начала, однако, я все же скажу пару слов об HTML5, чтобы было понятно, к чему я веду. На мой взгляд авторы этого языка решают только текущие проблемы, которые могут стать просто неактуальными к тому моменту, как язык таки реализуют в браузерах. HTML5 по определению не способен на лету воспринимать новые тенденции в веб-разработке и приспосабливаться к ним.

Зато на это способен XML. Теоретически xhtml2 как раз и является воплощением идей модульности и расширяемости. Но есть одна проблема: все равно вам требуется ждать, пока браузеры начнут его поддерживать. Я сейчас возьму на себя смелость сказать следующее: браузер вообще не должен учиться новому языку разметки и разработчики не должны ждать, пока он ему научится. Все что должен уметь браузер — это обрабатывать xml, css и Javascript.

Концепция проста: полностью разделить структуру документа, представление и поведение. Это именно то, что уже сегодня можно сделать используя соответственно xml, css и Javascript. Сценарий выглядит следующим образом:

  1. Браузер парсит xml-документ
  2. Браузер парсит css-стили, которые говорят как должны выглядеть элементы, и применяет стили к документу
  3. js-движок браузера выполняет Javascript, в котором описано, как должен вести себя каждый элемент страницы.

Обратите внимание, что без стилей браузер не знает, что делать с элементом <strong> например. А без описания поведения js-скриптом браузер не знает как себя вести, когда пользователь щелкает по ссылке. Этот подход можно, наверное, назвать DSRB — Document Structure-Representation-Behavior.

А теперь я покажу вам, собственно, страницу, сделанную описанным выше образом, работает в Mozilla, WebKit и Opera (в Опере есть небольшой непонятный глюк с заголовком) — посмотрите в исходный код обязательно. Недостаток данного подхода состоит в том, что браузеры не хотят выполнять Javascript, если они думают, что перед ними XML-документ. По этой причине мне пришлось указать пространство имен xhtml и избегать стандартных элементов HTML, чтобы браузеры не определяли для них дефолтные стили и поведение. Если браузеры начнут поддерживать Javascript для XML-документов, проблема будет решена.

В чем преимущество?


Сообразительные читатели уже догадались, что таким вот способом реализовать HTML5 можно уже хоть сегодня. При этом вы можете добавить в документ нужный вам доктайп или написать свой собственный DTD. Без доктайпа документ будет представлять из себя well-formed XML, что тоже неплохо.

В будущем, если идея приживется, полагаю, появится множество в чем-то схожих языков разметки. 2-3 из них, видимо, будут самыми популярными. Но, самое главное, что DSRB позволит создавать языки разметки, которые начнут работать в браузерах сразу же.
Всего голосов 105: ↑88 и ↓17+71
Комментарии161

Плавающая контентная область сайта.

Время на прочтение5 мин
Количество просмотров2.2K
Приветствую Хабр.
По мотивам cайта, сделанного сами знаете кем :)
В свое время увидел, такой эффект – слева сайта находятся ссылки, при клике на которые контентная область сайта плавно перемещается к указанному идентификатору. Эффект запомнился — решил повторить.
Для реализации плавного перемещения взял JQuery.

Читать дальше →
Всего голосов 125: ↑108 и ↓17+91
Комментарии78

5 советов для стартапов и предпринимателей

Время на прочтение3 мин
Количество просмотров756
Стартапы! Хотите быть инновационными? Возвращайтесь в гараж! Таков лозунг, предложенный венчурными капиталистами во время Конференции Dow Jones VentureWire Technology Showcase, которая недавно прошла в Рэдвуд-Сити, Калифорния.

В разгар одного из худших мировых экономических кризисов, инвесторы настроены весьма оптимистически и считают, что, чтобы пережить нынешний шторм и преуспеть, сегодняшние предприниматели должны изменить свое мышление и возвратиться к основам: «вернуться назад в гараж» и тогда, при должном творческом подходе и трудолюбии, успех гарантирован.
Читать дальше →
Всего голосов 37: ↑28 и ↓9+19
Комментарии17

Онлайн-курс оптимизации производительности MySQL

Время на прочтение1 мин
Количество просмотров2K
На Хабре некоторое время назад спрашивали про курсы по оптимизации MySQL. Мы разработали такой курс и проводим его дистанционно через интернет. Вот программа курса.

Курс продолжается 2 месяца (начать можно в любое время) и построен на выполнении практических заданий под руководством преподавателя. Все задания взяты из реальной практики, преподаватель ответит на все возникающие вопросы. Действует гарантия 100% возврата средств в течение первых двух недель по первому требованию.

Кризис не самое оптимальное время, чтобы пиарить новую услугу, но это оптимальное время для получения новых знаний. Получить знания можно не только на нашем курсе, но и используя открытые источники:
I. Видеозаписи докладов на Highload++:II. Статьи по оптимизации MySQL на webew.ru
III. Задать интересующий вопрос на форуме SQLinfo.ru
Всего голосов 18: ↑12 и ↓6+6
Комментарии2

Мирный XSS

Время на прочтение3 мин
Количество просмотров9K
Эта статья о мирном атомеXSS. Заставим зло работать на добро!

А зачем?


Простейший пример всё объяснит:
Вы разрабатываете веб-сервис, который поставляет данные другим сайтам (погода, данные по торгам в реальном времени, чат и т.п). Вам нужно организовать кроссайтовую передачу данных(данные погоды, торгов, текст чата) на стороне клиента.

Методы организации XSS

  1. Через тэг iframe
  2. Через тэг script
  3. Через flash<->javascript
  4. Через window.name + iframe + form
  5. Через CSS хак
  6. Через canvas + img
  7. Через прокси
Реализация каждого метода
Всего голосов 98: ↑87 и ↓11+76
Комментарии23

Доставка видеоконтента пользователям

Время на прочтение7 мин
Количество просмотров11K
[ Часть I. Доставка видеоконтента ] [ Часть II. CDN своими руками ]

Что такое «контент» для видеохостинга? Во-первых, контент видеохостинга – это просто видео, которое представляет собой набор файлов в различных форматах, в частности, в формате FLV для просмотра пользователем через Flash Player. Эти файлы статичны, видеохостинг при загрузке пользователем видеоролика осуществляет конвертацию во все требуемые форматы с необходимым битрейтом. Хранение такого контента — это хранение обычных файлов, только довольно большого размера. Отдача контента — это, по сути, организация скачивания файлов.
Во-вторых, контент видеохостинга — это «живые» потоки или вещания. Вещания не записываются на диск, не происходит их конвертация, потоки раздаются клиентам с учетом пропускной способности каналов (происходит пропуск пакетов, если канал клиента недостаточен для получения потока вещания в полном качестве). Отдача контента в данной ситуации — это раздача потока на большое количество подключенных пользователей (тысячи смотрящих).
Читать дальше →
Всего голосов 44: ↑44 и ↓0+44
Комментарии79

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность