Лет пять-шесть назад, когда я ещё программировал преимущественно на PHP, я начал использовать библиотеку curl для парсинга сайтов. Мне нужен был инструмент, который позволял эмулировать сессию пользователя на сайте, отсылать заголовки обычного браузера, давать удобный способ отсылки POST-запросов. Сначала я пытался использовать напрямую curl-расширение, но его интерфейс оказался очень неудобным и я написал обёртку с более простым интерфейсом. Время шло, я пересел на python и столкнулся с таким же дубовым API curl-расширения. Пришлось переписать обёртку на python.
Владимир Павлов @yajon
User
Оптимизация PNG и JPEG без потери качества. Часть 2
5 min
26KЗдравствуй Хабр!
Вот и настало время второй, и, надеюсь, долгожданной части. Настоятель рекомендую ознакомится с первой частью, ибо без этого будет тяжело понять, о чем я буду писать. В этой части я отойду от теории к практике, а именно покажу небольшое проект для комплексной оптимизации изображений.
Вот и настало время второй, и, надеюсь, долгожданной части. Настоятель рекомендую ознакомится с первой частью, ибо без этого будет тяжело понять, о чем я буду писать. В этой части я отойду от теории к практике, а именно покажу небольшое проект для комплексной оптимизации изображений.
+77
Почему бакалавриат в России готовит ИТ-недоучек? Советы первокурсникам
5 min
98KПоздравляю всех поступивших в ВУЗ!
Хочу поделиться некоторыми мыслями по поводу ИТ-образования в России. Шо, опять?!
В настоящее время Россия переходит на систему бакалавр+магистр. Переходит с большим скрипом.
Откроем новый образовательный стандарт (для примера специальность 230200 «Информационные системы и технологии»).
Бакалавра учат 4 года, из них:
13% Гуманитарный, социальный и экономический цикл
27% Математический и естественнонаучный цикл
1% Физ-ра
3% Практика, НИР
6% Аттестация, диплом
Собственно на предметы по специальности остается ровно 50%. В предыдущем стандарте было 45%.
В эти 50% еще входят такие далекие от компьютеров предметы, как метрология и БЖД.
Хочу поделиться некоторыми мыслями по поводу ИТ-образования в России. Шо, опять?!
В настоящее время Россия переходит на систему бакалавр+магистр. Переходит с большим скрипом.
Чему учат
Что же за зверь такой «бакалавр»?Откроем новый образовательный стандарт (для примера специальность 230200 «Информационные системы и технологии»).
Бакалавра учат 4 года, из них:
13% Гуманитарный, социальный и экономический цикл
27% Математический и естественнонаучный цикл
1% Физ-ра
3% Практика, НИР
6% Аттестация, диплом
Собственно на предметы по специальности остается ровно 50%. В предыдущем стандарте было 45%.
В эти 50% еще входят такие далекие от компьютеров предметы, как метрология и БЖД.
+108
Улучшаем производительность HTML5 canvas
10 min
40KTranslation
В последнее время мне везет натыкаться на интересные статьи для перевода. На этот раз – статья на HTML5Rocks о производительности HTML5 canvas. Автор пишет о некоей стене, в которую упираются разработчики при создании приложений. Какое-то время назад в нее уперся и я при портировании старой-доброй игры на canvas.
К сожалению, графики в оригинале вставлены через iframe. Я мог бы сделать снимки и разместить их изображения, но сам автор позиционирует графики актуальными и такими, которые будут обновляться, потому я просто разместил на них ссылки. Приятного чтения!

HTML5 canvas, который начинался, как эксперимент компании Apple, – наиболее широко распространенный стандарт для 2D режима непосредственной графики в интернет. Многие разработчики использую его в широком круге мультимедиа проектов, визуализаций и игр. Как бы то ни было, с ростом сложности приложений, разработчики нечаянно натыкаются на стену производительности.
К сожалению, графики в оригинале вставлены через iframe. Я мог бы сделать снимки и разместить их изображения, но сам автор позиционирует графики актуальными и такими, которые будут обновляться, потому я просто разместил на них ссылки. Приятного чтения!

- Вступление
- Тестирование производительности
- Предварительно отрисовывайте в виртуальный canvas
- Группируйте вызовы
- Избегайте ненужных изменений состояния
- Отрисовывайте только разницу, а не весь холст
- Используйте многослойных canvas для сложных сцен
- Избегайте shadowBlur
- Различные способы очистить экран
- Избегайте нецелых координат
- Оптимизируйте анимации с помощью 'requestAnimationFrame'
- Большинство мобильных реализаций canvas – медленные
- Заключение
- Ссылки
Вступление
HTML5 canvas, который начинался, как эксперимент компании Apple, – наиболее широко распространенный стандарт для 2D режима непосредственной графики в интернет. Многие разработчики использую его в широком круге мультимедиа проектов, визуализаций и игр. Как бы то ни было, с ростом сложности приложений, разработчики нечаянно натыкаются на стену производительности.
+110
Что делать, если некогда писать бизнес-план
4 min
5.8KДетальный бизнес-план или «на салфетке»?
Бизнес план — это документ, который инвесторы заставляют написать, но который они не читают" — Стив Бланк (Steve Blank)
Детальный бизнес-план новой идеи, проработанный, на нескольких десятках страниц, конечно, выглядит солидно. И, возможно, некоторым внушает больше доверия — ведь стопка бумаги предполагает, что есть не только идея, но уже было проведено и исследование рынка (вопрос качества этого исследования не затрагивается), конкурентов, в конце концов вложены силы и время!
+38
Произносим правильно
2 min
153KИз знакомых мне айтишников очень немногие стараются правильно произносить английские слова. Конечно, привычнее произносить C++ как «си-плюс-плюс», а не «си-плас-плас» или «опен-бэ-эс-дэ», а не «оупэн-би-эс-ди».
Но когда «echo $value;» читают как «ечо валуй» — это уже не смешно. Другой человек вас может просто не понять, особенно иностранец.
В топике представлен небольшой список «сложных» слов, которые часто произносят неправильно.
Ориентироваться лучше не на мою (весьма приблизительную) транскрипцию, а на аудио.
♫ — прослушать произношение в словаре
► — прослушать произношение на youtube
Начнем с названий:
Аббревиатуры:
Обычно аббревиатуры произносятся по правилам английского языка: API — эй-пи-ай, PCMCIA — пи-си-эм-си-ай-эй, OpenBSD — оупен-би-эс-ди и т.д.
Но когда «echo $value;» читают как «ечо валуй» — это уже не смешно. Другой человек вас может просто не понять, особенно иностранец.
В топике представлен небольшой список «сложных» слов, которые часто произносят неправильно.
Ориентироваться лучше не на мою (весьма приблизительную) транскрипцию, а на аудио.
♫ — прослушать произношение в словаре
► — прослушать произношение на youtube
Начнем с названий:
ABBYY | аби | ► | ||
Adobe | эдоуби | [əˈdəʋbɪ] | ♫ | |
Apache | эпэчи | [əˈpætʃiː] | ► | от «a-patchy» |
Asus | офиц. э́сус амер. э́йсус |
► |
||
BenQ | бенкью | ♫ | ||
Cisco | сискоу | [ˈsɪskoʊ] | ♫ | |
EBay | ибэй | ♫ | ||
Eee PC | и писи | ► | ||
Ethernet | изэрнэт | [ˈiθərˌnɛt] | ♫ | |
Itanium | айтэйниум | [aɪˈteɪniəm] | ► | |
Juniper | джу́нэпэр | [ˈdʒunəpər] | ♫ | |
LaTeX | лэйтех лэйтек латех латек |
[ˈleɪtɛk] ['leɪtɛx] [ˈlɑːtɛx] [ˈlɑːtɛk] |
||
Linux | офиц. линэкс вар. линукс |
[ˈlɪnəks] [ˈlɪnʊks] |
► |
|
Mac OS X | мэк оу-эс тэн | ► | ||
MySQL | офиц. май-эс-кью-эл вар. май-сиквел |
► | как «My Ess Que Ell», см. оф. сайт | |
nginx | энджин-икс | ► | (от engine-x) | |
PuTTY | пати | [ˈpʌtɪ] | см. оф. сайт | |
Qt | кьют | [kyut] | см. | |
TeX | тех тек |
[ˈtɛx] [tɛk] |
не «текс» | |
XBox 360 | экс-бокс фри сискти | ♫ | ||
Xen | зен | [ˈzɛn] | ♫ | |
Xeon | зион | ♫ | ||
Xerox | зирокс | [ˈzɪərɒks] | ♫ | |
Xilinx | зайлинкс | [ˌzaɪliːŋks] | ► | |
ZyXel | рус. зайксел амер. зайзел |
► | см. |
Аббревиатуры:
GNU | гну | ► | вар. гню | |
GWT | гвит | [ˈɡwɪt] | ||
ICANN | айкэн | ► | ||
IEEE | ай-трипл-и | ► | как «I triple E» | |
ISO | айсо | ► | ||
PNG | пинг | [ˈpɪŋ] | ♫ | как «ping», см. спецификацию |
PXE | пикси | [ˈpɪksi] | ► | |
RUP | рап | ► | ||
SCSI | скази | ['skʌzi] | ♫ | |
SOAP | соуп | [soʊp] | ► | |
SQL | эс-кью-эл | [ˈɛsˈkjuˈɛl] | неофиц. «сикуел» | |
SWF | свиф | [ˈswɪf] | см. спецификацию | |
WYSIWYG | визивиг | [ˈwɪziˌwɪg] | ♫ | |
XAML | зэмл | [ˈzæməl] | ► | |
XUL | зул | [ˈzuːl] | ||
Yii | длинное «и» | [ji:] | ► |
Обычно аббревиатуры произносятся по правилам английского языка: API — эй-пи-ай, PCMCIA — пи-си-эм-си-ай-эй, OpenBSD — оупен-би-эс-ди и т.д.
+300
Написание макроса-бота для браузерной игры
8 min
53KВведение
Не так давно на Google+ появились игры. Прочитав топик об этом, я решил во что нибудь поиграть. Выбор пал на игру Diamond Dash. Через некоторое время игры программист во мне заговорил, что однотипные действия нужно автоматизировать. И вот что из этого вышло…

*Примечание: «руками» даже опытному игроку сложно набрать больше 400к
Раньше я никогда не сталкивался с задачами работы с экраном и мышкой. После непродолжительного гугления было решено для решения использовать язык макросов AutoIt.
Под катом вы найдете краткое описание игры, мой способ распознавания поля, алгоритм определения точки нажатия, и некоторое количество оптимизаций. А так же ссылку на github-репозиторий скрипта.
UPD Добавлено видео работы скрипта.
+160
+48
Геймификация активностей пользователей или «Написал комментарий? Получи бейдж!»
2 min
2.5K
Безусловно, мы верим в главенствующую роль контента, но, конечно, сегодня интересный контент — далеко не всё, что нужно сделать, чтобы создать успешный информационный проект. Важна аудитория проекта, причем не только её размер, но и степень вовлечённости, выражающаяся в стремлении оставлять комментарии, делиться контентом (ведь не зря нынче везде рассыпаны кнопки социальных сетей — в мире победивших социальных сетей их эффективность трудно переоценить) и даже работать в качестве авторов проекта. Чтобы обеспечить эту вовлеченность мы создаем собственные решения, которые делают «Лайфхакер» не похожим на остальные блоги. К примеру, мы создали спецпроект «Хакрадар», где собираем контент, который наши читатели публикуют в Twitter, а также недавно запустили свою собственную систему комментариев, которая помогла нам избавиться от множества «детских» болезней таких сторонних систем комментирования, как Disqus и Intense Debate (впрочем, это тема отдельного разговора).
+42
Headtracking или как увидеть трехмерный чайник на двухмерном мониторе
4 min
9.1KВ прошлом семестре брал я курс компьютерного зрения и под конец надо было делать финальный проект на любую тему, которая с этим связана. Стало мне интересно, можно ли при помощи веб-камеры отслеживать глаза пользователя и показывать ему 3д объекты с правильного ракурса, этим я и решил заняться. Т.е. сделать из монитора эдакое окно в виртуальный мир. Теперь же я хочу поделиться с хабрапользователями о том, как это у меня получилось и какие подводные камни встретились на пути.
+170
Поговорим о словарном запасе иностранного языка
4 min
264KСколько слов в английском языке? Oxford English Dictionary содержит около 500 000 словарных статей, не учитывая специфические научные слова и выражения (которых насчитывается еще порядка 500 000). А как вы думаете, какой средний словарный запас иностранного языка дает вам средняя школа за время обучения? Правильный ответ – около 2500 слов. Мало ли этого набора? Тут уже надо исходить из ваших целей. Для общения с иностранцами на деловые темы – однозначно мало. Для чтения несложных текстов в интернете – более чем достаточно. Если быть точнее:
400–500 слов – активный словарный запас для владения языком на базовом (пороговом) уровне.
800–1000 слов – активный словарный запас для того, чтобы объясниться; или пассивный словарный запас для чтения на базовом уровне.
1500–2000 слов – активный словарный запас, которого вполне хватит для того, чтобы обеспечить повседневное общение в течение всего дня: или пассивный словарный запас, достаточный для уверенного чтения.
3000–4000 слов – в общем, достаточно для практически свободного чтения газет или литературы по специальности.
Около 8000 слов – обеспечивают полноценное общение для среднего европейца. Практически не нужно знать больше слов для того, чтобы свободно общаться как устно, так и письменно, а также читать литературу любого рода.
К этим данным пришел известный шведский полиглот Эрик Гуннемарк, основатель Международной ассоциации `Amici Linguarum` (`Друзья языков`). Более того, он составил набор минимального количества слов и выражений, которые необходимо знать, для порогового уровня владения языком, назвав их Минилекс и Минифраз.
Интересно, а какой средний уровень словарного запаса у рядового пользователя сети и у вас лично? Об этом расскажу дальше.

400–500 слов – активный словарный запас для владения языком на базовом (пороговом) уровне.
800–1000 слов – активный словарный запас для того, чтобы объясниться; или пассивный словарный запас для чтения на базовом уровне.
1500–2000 слов – активный словарный запас, которого вполне хватит для того, чтобы обеспечить повседневное общение в течение всего дня: или пассивный словарный запас, достаточный для уверенного чтения.
3000–4000 слов – в общем, достаточно для практически свободного чтения газет или литературы по специальности.
Около 8000 слов – обеспечивают полноценное общение для среднего европейца. Практически не нужно знать больше слов для того, чтобы свободно общаться как устно, так и письменно, а также читать литературу любого рода.
К этим данным пришел известный шведский полиглот Эрик Гуннемарк, основатель Международной ассоциации `Amici Linguarum` (`Друзья языков`). Более того, он составил набор минимального количества слов и выражений, которые необходимо знать, для порогового уровня владения языком, назвав их Минилекс и Минифраз.
Интересно, а какой средний уровень словарного запаса у рядового пользователя сети и у вас лично? Об этом расскажу дальше.

+92
Лабы по ROUTE: EIGRP
6 min
19KEIGRP Lab | EIGRP Lab — Answers
Привет! Сегодня я хочу поделиться с уважаемым сообществом лабами, которые помогли мне в подготовке к экзамену ROUTE из нового трека CCNP, а также мыслями и впечатлениями от экзамена. В связи с тем, что материала и лаб очень много, придется разбить это все на порции и выкладывать их по очереди. Сегодня предлагаю поговорить о CCNP 6 версии вообще, об экзамене ROUTE и посмотреть на лабы по EIGRP, которые я использовал для подготовки к экзамену.
Заинтересовавшимся – добро пожаловать под кат!

Заинтересовавшимся – добро пожаловать под кат!
+28
Определение части речи слов в русском тексте (POS-tagging) на Python 3
9 min
97KПусть, дано предложение “Съешьте еще этих мягких французских булок, да выпейте чаю.”, в котором нам нужно определить часть речи для каждого слова:
Зачем это нужно? Например, для автоматического определения тегов для блог-поста (для отбора существительных). Морфологическая разметка является одним из первых этапов компьютерного анализа текста.
[('съешьте', 'глаг.'), ('еще', 'нареч.'), ('этих', 'местоим. прил.'), ('мягких', 'прил.'), ('французских', 'прил.'), ('булок', 'сущ.'), ('да', 'союз'), ('выпейте', 'глаг.'), ('чаю', 'сущ.')]
Зачем это нужно? Например, для автоматического определения тегов для блог-поста (для отбора существительных). Морфологическая разметка является одним из первых этапов компьютерного анализа текста.
+80
К юбилею AgileManifesto — материалы с AgileDays-2011
16 min
3.1KПользуясь юбилеем — как раз в августе, 10 лет назад был опубликован[1] The Agile Manifesto еще раз предлагаю сейчас, в летнее затишье, загрузить на будущее в себя немного Agile (когда пойдут дедлайны, будет уже не до этого).
А именно, посмотреть-почитать материалы докладов с прошедшей в Москве конференции AgileDays-2011. Далее, будет небольшое пояснение, почему эти материалы интересны, смотрибельны и читабельны, а также аннотированная тематическая классификация докладов, с ссылками на материалы — видеозаписи, слайды, рецензии и т.п.
А именно, посмотреть-почитать материалы докладов с прошедшей в Москве конференции AgileDays-2011. Далее, будет небольшое пояснение, почему эти материалы интересны, смотрибельны и читабельны, а также аннотированная тематическая классификация докладов, с ссылками на материалы — видеозаписи, слайды, рецензии и т.п.
+31
TOP 7 – за 7 дней. Маркетинг iPad приложений на Apple Store
3 min
9.5KНачну не с самих методов раскрутки, а с подготовки, что является не менее важным, чем сама раскрутка и продвижение приложения. Сразу оговорюсь, что привожу в пример только платные приложения и российский Apple Store.


+35
CSS хаки
4 min
126KБраузеры и стандарты. Вечная погоня. Из-за несоответствий стандартам, из-за разных способов рендеринга страниц большая часть времени веб-дизайнера уходит на то, чтобы загладить эти несоответствия (использовать хаки). В итоге, вместо эффективной работы, дизайнер вступает в противоестественные отношения с браузерами, теряя драгоценное время.
+194
Page Visibility API и Visibility.js
7 min
21K
Page Visibility API — новое API в JavaScript, которое позволяет узнать, видит ли пользователь ваш сайт или же он, например, открыл другой таб.
Каким образом это API может сделать наш Веб дружелюбнее и уютнее? Ну самое очевидное:
- Сделать сайт более дружелюбным к пользователю, «поднять юзабилити». Например, отключать слайдшоу или ставить видео на паузу, когда вы переключаетесь в другой таб (например, вы смотрите видео на YouTube и вам приходит срочное эл. письмо).
- Не потреблять лишних ресурсов. Выключать лишнюю логику, когда она не нужна, так как пользователь не видит сайт. Например, в фоновом табе отключать сложные JS-рассчёты или реже проверять новые сообщения по AJAX.
- Считать более точную статистику. Например, не засчитывать пользователей, которые открыли ваш сайт в новом табе и закрыли его не просматривая.
- Поддерживать новую технологию пререндеринга из Google Chrome, когда браузеру заранее загружает и рендерит указанную страницу, чтобы открыть её мгновенно. Например, в поиске Google первый результат выдачи будет отмечен на прередеринг.
- Сделать эмулятор кота Шрёдингера (на иллюстрации), который отобразит живого или мёртвого кота только тогда, когда пользователь откроет загруженный в фоне таб.
Чтобы сделать работу с Page Visibility API более удобной, я (во славу Злых марсиан) разработал библиотеку Visibility.js. Она позволяет забыть о вендорных префиксах и добавляет «сахара» высокоуровневых функций, чтобы писать короткий чистый код (например,
Visibility.every
— аналог setInterval
, но работает только, если сайт в открытом табе).Милый пример видео-проигрывателя, который останавливает видео, когда страница становится невидимой (открывать в Google Chrome 13).
+93
Дополненная реальность: как я искал берлинскую стену
1 min
11KЭнтузиасты Augmented Reality заморочились и создали, пожалуй, один из самых эффектных слоев дополненной реальности — воссоздали берлинскую стену на всем ее протяжении, со всеми КПП. Оказавшись в Берлине на выставке IFA, мы c evil_irbiss и последний вечер потратили не на пьянки-гулянки (ни разу ни в один магазин не зашел, честно-честно!), а искали куски стены. Нашли!
Чесгря, думал будет выглядеть эффектней, но все равно прикольно — знаешь по крайней мере, как это было, где проходила стена. Ваня baragol еще и разразился вдогонку колонкой на эту тему, читать здесь.
Чесгря, думал будет выглядеть эффектней, но все равно прикольно — знаешь по крайней мере, как это было, где проходила стена. Ваня baragol еще и разразился вдогонку колонкой на эту тему, читать здесь.
+19
The Noun Project: свободная иконка для каждого объекта в мире
1 min
14K
Создатели проекта The Noun Project поставили целью собрать пиктограммы для всех объектов в мире. Коллекцию по мере сил пополняют десятки дизайнеров из разных стран. Все иконки публикуются в формате SVG, под лицензией Creative Commons Attribution 3.0 (CC BY) или Public Domain, разбиты на тематические категории, есть поиск на русском языке.
+104
Windows Phone. Rush for Apps
2 min
7.6KДрузья! В преддверии запуска Windows Phone “Mango” в России мы решили объявить марафон разработки приложений под WP7, в рамках которого мы поможем вам сделать свое первое или не первое приложение.


+21
Information
- Rating
- Does not participate
- Location
- Ярославль, Ярославская обл., Россия
- Registered
- Activity