Как стать автором
Обновить
2
0

Пользователь

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

Держаться корней (к 80-летию Никлауса Вирта)

Время на прочтение5 мин
Количество просмотров15K
Но, чтобы стоять,
я должен держаться корней.
Борис Гребенщиков


Юбилей Никлауса Вирта – очень значимая для меня дата. Вот уже три десятка лет считаю себя его учеником, начиная с 1982 г., когда впервые взял в руки сделанную на ксероксе копию его препринта о языке Модула-2. Примерно в то же время началась работа над нашим «Кроносом».

С профессором Виртом лично познакомился позже, в 1990 г., когда он приезжал к нам в Новосибирский Академгородок. В 1991 году провел, по приглашению Вирта, две недели в его ETH Zurich и заболел Обероном. Потом пошел своим путем, но путь этот был бы невозможен без того, что внёс в мою жизнь профессор Вирт.

Я счастливый человек. Мне невероятно повезло в самом начале пути: довелось оказаться на стыке трёх блестящих школ программирования.

Первая — школа академика Андрея Петровича Ершова (1931-1988), которую постигал, в основном, у его ближайшего соратника Игоря Васильевича Поттосина (1933-2001). Вторая — школа Никлауса Вирта. Сначала в Новосибирске, затем в Цюрихе. Была и третья, которую разглядел в себе совсем недавно. Это школа НФ ИТМиВТ (Новосибирский филиал Института точной механики и вычислительной техники).

Читать дальше →
Всего голосов 84: ↑73 и ↓11+62
Комментарии39

Автомат света и музыки АСИМ-АУ-2-6

Время на прочтение13 мин
Количество просмотров32K
За громким названием — автоматический выключатель света для ванной. И сначала все было безумно просто. Беспроводной датчик на двери сигналил об открытии центральному контроллеру, а тот переключал свет и одновременно переключал музыку. Замечу, что контроллер не знал текущего состояния света и музыки, поэтому для правильного переключения нужно было каждый раз полностью открывать и закрывать дверь. И, конечно, не заходить лишний раз, если внутри уже кто-то есть.

Но это вполне вписывалось в схему естественного поведения дома. Т.е. мы за собой дверь в ванную закрываем и стараемся друг другу не мешать. К тому же, санузел не такой уж большой, и вдвоем там объективно довольно тесно. Что в схему не вписывалось, так это гости. Они нажимали на обычный выключатель, даже если несколько раз сказать, что свет — автоматический. Они не закрывали дверь и лезли друг к другу.

С этим надо было что-то делать.

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии16

Переосмысление Zephir

Время на прочтение2 мин
Количество просмотров8.8K
После нескольких месяцев работы над Zephir мы очень довольны прогрессом. В течение нескольких месяцев мы выпустим бета-версию и сможем использовать все ее возможности. Проект собрал более 1000 коммитов и все еще многое нужно сделать. Проект позволил нам провести больше исследований в области computer science и это было очень интересно для нас.
Кроме того, хоть мы и не уверенны, на счет того, что произойдет с PHP в будущем, так или иначе — мы создаем инструмент, который позволяет использовать еще одну возможность PHP (расширения на C), которая раньше была доступна только опытным C программистам.
Также в Zephir мы реализовали фичи, о которых многие мечтали, но по тем или иным причинам их нет в PHP сейчас:



Мы верим, что все это поможет нам улучшить фреймворк и может помочь вам в создании собственных инструментов новым способом. Не всем нужны эти фичи и не все с ними согласны, но так или иначе мы надеемся, что однажды они таки окажутся в PHP. Что бы не произошло, мы надеемся что PHP продолжит развиваться несмотря на пройденный путь.
Zephir изначально задуман, как высокоуровневый язык, создающий абстракцию над низкоуровневыми деталями ядра PHP. Он генерирует код на C, который в последствии может быть скомпилирован популярными компиляторами такими как gcc/clang/vc.
Так как Zephir высокоуровневый язык, он может работать, как мета-язык, а не просто DSL.
После некоторого обдумывания, я создал этот топик, чтобы обсудить с вами новую идею.
Если мы переделаем Zephir так, чтобы он мог генерировать и PHP и C код, тогда Zephir станет более мощным и гибким.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии9

Всем насрать на твою производительность

Время на прочтение5 мин
Количество просмотров125K
image

«Если говорить о бизнесе, мой опыт показывает, что большинство контор являются крайне неэффективными.»

Сегодня в моем G+ появился этот пост испанского блогера, который пишет о личной эффективности и производительности — словом, очередной productivity-freak, поехавший, как и я, по GTD, time management и прочим похожим красивым словам. Текст оказался написан достаточно харизматично и, на мой взгляд — толково, в связи с чем нет сил больше прятать. Пост посвящен попыткам справиться с неимоверным батхертом, который рано или поздно встречается на пути каждого, кто научился худо-бедно организовывать своё время и теперь стоит лицом к лицу с вопросом «что же делать с раззвездяями кругом»? Поскольку писал ИТ консультант, в то время как у нас же тут все программисты, поэтому текст слегка адаптирован под наши особенности – без ущерба общему смыслу.

Читать дальше →
Всего голосов 118: ↑89 и ↓29+60
Комментарии91

Китайские видеокамеры и TCP: баг или фича?

Время на прочтение8 мин
Количество просмотров80K
В связи с узурпацией должности управдома нашего МКД, и необходимости «причесать» общественный беспорядок, потихоньку конструирую систему видеонаблюдения.
Разумеется, финансирование минимальное, планы — грандиозные, поэтому собирается всё из подножного корма.
Подробности чуть позже, а вот один из интересных багов, который заставил перебрать много чего.

Итак, началось всё с малого — простенькая купольная камера, бралась самая паршивая по принципу "только б IP и купол". После пошел процесс перебора софта (тема отдельного поста, будет, опять же, позже)… В конце зафиксировался на Macroscop в один канал. Стояла пару месяцев, есть-пить не просила, наркоманов гонять помогала.

И вот работает вроде всё, но как-то подлагивает периодически. Грешил на всё: на проц, на сеть, на софт, на погоду на марсе… Саппорт по логам говорит, что-де камера периодически отваливается.

Upd
Читать дальше →
Всего голосов 110: ↑104 и ↓6+98
Комментарии77

Маленькая заметка о том, как подружить Heroku, Kraken.js и Sockjs

Время на прочтение5 мин
Количество просмотров4.9K
Некоторое время назад я, в поисках новых инструментов для реализации очередного «домашнего» проекта, наткнулся на Kraken.js — Open Source проект от PayPal. Kraken.js представляет из себя очередной Node.js-фреймворк, основанный на express. Поискав на Хабре, я не обнаружил, ровным счетом, ничего. Встретил только одно упоминание в виде ссылки на главный сайт здесь.

Чем же он меня привлек, и чем он отличается от известных Derby.js, Meteor.js, Sails.js, и др.?

А понравился он мне прежде всего тем, что не накладывает на разработчика совсем уж жестких ограничений (прежде всего на источники данных, на менеджеры пакетов, ...), и при этом вносит некоторую структурированность в код, предлагая следовать MVC-модели. Не хочу здесь подробно останавливаться на всех его плюшках и особенностях, благо все отлично расписано на сайте проекта, а сразу перейду к «своим баранам».

Итак, задача залить Kraken.js-приложение на сервис Heroku, заставить его там работать, и, на сладкое, прикрутить Sockjs.
Что ж, поехали
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Init.js: Зачем и как разрабатывать с Full-Stack JavaScript

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

История


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

Окей, значит людям это нужно. На этом можно даже заработать денег. И единственная причина, по которой люди до сих пор этим не пользуются: вы не реализовали свою идею. Пока не реализовали.

И наконец, в один прекрасный день вы решили: “Сделаем это!”. И вот вы уже пытаетесь разобраться как реализовать бизнес-логику своего приложения, ту киллер-фичу, которая будет двигать продукт вперед. У вас есть идея как это сделать, и вы знаете, что способны на это. И вот вы говорите: “Готово! Работает!” У вас есть успешный прототип! Осталось только упаковать его в веб приложение.

“Окей, сделаем сайт,” говорите вы.

А только потом вы понимаете, что для этого нужно выбрать язык программирования; нужно выбрать (современную) платформу; нужно выбрать какие-то (современные) фреймворки; нужно настроить (и купить) хранилище, базы данных и хостинг; нужно обеспечить интерфейс для администрирования; нужно обеспечить контроль доступа и систему управления контентом.

Перед вами десятки и десятки архитектурных решений, которые необходимо принять. И вы не хотите ошибиться: требуются технологии, которые позволят вести быструю разработку, поддерживают постоянные итерации, максимальную эффективность, скорость, устойчивость и многое другое. Вы хотите быть бережливым (lean) и гибким (agile). Вы хотите использовать технологии, которые помогут вам быть успешным как в краткосрочной, так и в долгосрочной перспективе. А выбрать их далеко не всегда так просто.

“Я перегружен”, говорите вы и чувствуете себя перегруженным. Энергия уже не та, что была в начале. Вы пытаетесь собраться с мыслями, но работы слишком много. Прототип медленно блекнет и умирает.
Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии29

«Чем хуже, тем лучше», или Стартап за 6 часов

Время на прочтение6 мин
Количество просмотров40K
19 августа 2009 года, в 12:30 Том Леман написал первую строчку кода задуманного им проекта Rap Genius, посвященного трактованию рэп-текстов. А уже в 18:22 того же дня была готова первая версия веб-сайта. Менее шести часов потребовалось на то, чтобы создать сервис, куда сегодня каждый месяц заходят 40 миллионов новых пользователей, который привлек уже 17 миллионов долларов венчурных инвестиций, и вокруг которого недавно разгорелся интернет-скандал, разрешившийся в пользу проекта и сделавший его ещё более популярным.

В первый же день, разложив по полочкам песню Killa Cam в исполнении рэпера Cam’ron, Леман внедрил те функции, которые до сих являются самыми востребованными. Конечно же, мы были просто обязаны позвать его выступить на последней конференции Design+Startup, проходящей под патронажем фонда First Round. На этой встрече Леман поделился теми четырьмя словами, благодаря которым Rap Genius смог состояться.

«Первая версия Rap Genius была просто отвратительна. Но благодаря этой отвратительности я узнал секрет, как нужно делать вещи в интернете. Секрет простой: чем хуже, тем лучше».


Что же это значит на практике? Том Леман с удовольствием рассказывает нам об этом.

image

Читать дальше →
Всего голосов 71: ↑63 и ↓8+55
Комментарии40

Погодная станция с Ethernet и планшетом в качестве устройства отображения

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

Введение


Я – пользователь бытовых погодных станций со стажем, и в этом скрыта двойная катастрофа. Во-первых, я уже настолько привык к тому, что погода внутри и вне дома мне известна, что отсутствие этой информации вводит меня в состояние когнитивного диссонанса. Во-вторых, с погодными станциями мне хронически не везет. Две из них сломались и, как в таких случаях говорят про всяческие индикаторные приборы, стали «показывать погоду», только с точностью до наоборот, показывали они что угодно, только не погоду. Из Штатов привез с собой третью, которая прослужила мне верой и правдой целый год, и я начал было потихоньку расслабляться, но тут у случайно забежавших (и давших нам с женой возможность временно возложить на их плечи заботу о сыне и выбежать из дома) родителей случился приступ принужденной заботы, в свою очередь, вызвавший острое желание помыть окна. Результат тщательного натирания окон – не только сверкающие окна, но и прыгнувший вниз датчик погодной станции. Этаж второй, так что датчик разбился бы вряд ли, но, как известно, непосредственно под окнами каждой многоэтажки есть невидимая пространственно-временная сингулярность. Не знаю, можно ли этот феномен описать в рамках Стандартной Модели, но то, что в основе сингулярности лежит принцип «что упало, то пропало», сомнений нет. Так что датчик я не нашел.
Естественно, в полный рост встала нужда менять девайс, но мысль о том, что ни одна из «бывших» не продержалась у меня дома больше года, настораживала. И тогда в голову забрела идея «а не сделать ли самому?».
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии37

Как я перехватывал трафик покер рума или «Пишем свой MitM SSL прокси на C#»

Время на прочтение5 мин
Количество просмотров76K
Однажды у меня появилась навязчивая идея: посмотреть, а что же там такого покерный клиент отправляет на сервер. Как Вы понимаете, крупные покерные румы используют SSL для передачи данных. Протоколы, основанные на асимметричном шифровании, подвержены только одному известному мне виду атак — MitM (Man in the middle — человек посередине).

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

Читать дальше →
Всего голосов 62: ↑54 и ↓8+46
Комментарии33

Беда с web безопасностью или самый защищенный банк Америки

Время на прочтение3 мин
Количество просмотров33K
Вдохновившись статьей MrGrey о реакций российских компаний на плохие новости о дырах в безопасности, решил добавить свои 5 копеек, рассказав о своем опыте общения с американским Банком, который называет самым защищенным банком и является одним из крупнейших банков Америки — и в общем, наверное, всего мира.

Началось все с поздравительного email'a о регистрации кредитки — в нем не работали ссылки, просто в следствии описки (был поставлен лишний пробел(%20) после http://). Безуспешно поискав email технической поддержки на сайте, я не нашел ничего лучшего, чем написать в онлайн чат, где меня конечно не поняли.
Читать дальше →
Всего голосов 103: ↑88 и ↓15+73
Комментарии58

Разработка статического сайта на Meteor

Время на прочтение3 мин
Количество просмотров15K
Всем привет! Встретил статью о том, как на сайте meteor.com обеспечена работа для высоких нагрузок. Звучит это довольно интересно. (пер.)

Во-первых, зайдите на meteor.com и посмотрите, как это работает.

Мы все знаем, что meteor.com сделан на Meteor. Вы можете заметить, что загружается он очень быстро. Также, у него нет процесса загрузки — после того, как HTML построен, страница сразу отображается на экране.

Но как это возможно? Обычно, это занимает какое-то время — подключение к серверу, получение данных и отображение информации на экране. Может, Meteor использует какую-то магию с Galaxy?
Читать дальше →
Всего голосов 24: ↑16 и ↓8+8
Комментарии6

Шифрованный тоннель для общения через VK (RSA + GreaseMonkey)

Время на прочтение3 мин
Количество просмотров36K
В связи с развитием событий в мире последним временем пользователи сети всё чаще задумываются о своей безопасности: кто-то отказывается пользоваться рядом web-сервисов, кто-то удаляет личную информацию, фото и другие данные с социальных сетей, а кто-то и вовсе «блокирует» свои учётные записи. Но вот только большинство этих данных удаляются лишь визуально, что, в принципе, общеизвестный факт.
image

Поскольку значительная часть моих знакомых — это люди, не имеющие достаточных знаний в сфере IT, то приходится изощряться, чтобы заставить их пользоваться непривычными им сервисами либо утилитами, которые я считаю безопасными.
Предлагаю относительно простой способ установки безопасного канала для текстового общения через всеми известную сеть ВКонтакте. Для этого не нужно никакого дополнительного софта либо обширных знаний в сфере информационной безопасности. Всё, что вам нужно иметь — это web-браузер и аддон GreaseMonkey.
Читать дальше →
Всего голосов 51: ↑33 и ↓18+15
Комментарии44

Вышел NetBeans IDE 8.0 Beta

Время на прочтение2 мин
Количество просмотров44K
Уже как пару месяцев назад, тихо и без шумихи вышла Beta-версия замечательной среды разработки NetBeans IDE.

Напомню, что NetBeans — это продвинутая среда разработки, позволяющая разрабатывать приложения на таких языках как: PHP, C/C++, Python, JavaScript и даже Ада.

Хотя NetBeans IDE является свободной средой разработки и проект разрабатывается сообществом разработчиков-энтузиастов, но по качеству и возможностям не уступает коммерческим IDE.


Из коробки поддерживается:

  • рефакторинг и профилирование
  • выделение синтаксических конструкций цветом
  • автодополнение на лету
  • управление всеми популярными системами контроля версий


Что нового в NetBeans 8.0 Beta?


  • Поддержка Java SE 8
  • Поддержка Java ME 8
  • Расширенная поддержка HTML5
  • Поддержка Tomcat 8.0
  • Поддержка PHP 5.5
  • Множество улучшений всей IDE

Подробнее под катом
Всего голосов 44: ↑41 и ↓3+38
Комментарии82

Настройка централизованного логирования с LogAnalyzer и Rsyslog

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


Совсем недавно у меня возникла необходимость создать центральный лог-сервер с веб-интерфейсом и в этой статье я хотел бы поделиться опытом, возможно кому-то он будет полезен. Я опишу установку и настройку веб-просмотрщика логов LogAnalyzer, Rsyslog-клиента, который будет отсылать все логи на удаленный Rsyslog-сервер, и последний, в свою очередь, будет писать их в базу MySQL.

В качестве ОС я выбрал Ubuntu 12.04.

Адреса тестовых вебнод:
192.168.1.51 (loganalyzer-mysql.ip) — Rsyslog-сервер, на этом хосте также будет проинсталлирован LogAnalyzer
192.168.1.50 (loganalyzer-mongo.ip) — Rsyslog-клиент, который будет отсылать логи на сервер loganalyzer-mysql.ip

Настраиваем серверную часть, для чего добавим репозиторий от разработчика Rsyslog:

...
# Adiscon stable repository
deb http://ubuntu.adiscon.com/v7-stable precise/
deb-src http://ubuntu.adiscon.com/v7-stable precise/
...

# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com AEF0CF8E
# gpg --export --armor AEF0CF8E | sudo apt-key add -
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии71

Вышла Derby 0.6.0-alpha3

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

DerbyJs — реактивный фулстек javascript-фреймворк. О нем неоднократно писали на хабре — материалы по Derby. Буквально пару дней назад в репозитории Derby произошла смена основной ветки. Теперь версия 0.5 отошла на задний план, 0.6 — основная.

Не в традициях команды разработчиков заниматься пиаром — изменения произошли тихо и незаметно. А что же поменялось?
Подробности
Всего голосов 26: ↑21 и ↓5+16
Комментарии17

Дайджест интересных новостей и материалов из мира PHP № 36 (9 — 23 февраля 2014)

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


Предлагаем вашему вниманию очередную подборку актуальных новостей, интересных материалов и полезных инструментов.

Приятного чтения!
Читать дальше →
Всего голосов 72: ↑60 и ↓12+48
Комментарии32

Офис в Берлине, чем русские стартапы отличаются от немецких — и зачем нужны геосервисы старым добрым магазинам в офлайне

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

«А самую мрачную переговорку мы назвали Moscow»

Дело было примерно так. Парни сидели на мансарде, пили компот – и тут к ним пришла идея. Они решили сделать сайт про товары и цены в Германии – ну, знаете, типа нашего Яндекс.Маркета, только с геолокацией и подписками. Проблема была в том, что в Германии тогда основная розница жила в оффлайне.

Глава сети, к примеру, мог оказаться почтенным 77-летним дедушкой. Нет, он слышал про интернет, но подозревает, что это хитрая разновидность SMS. Почту, вполне возможно, ему носят распечатками каждое утро. И он уверен, что то, что работало последние 30 лет, сработает и в следующие 10. Такая ситуация много где, потому что крупным бизнесом в Европе нередко управляют семьи. Самое красивое, что парни всё-таки нашли простой как бревно, но очень прибыльный способ использовать это для развития своего проекта.

Осторожно, трафик — много фотографий их офиса.
Читать дальше →
Всего голосов 83: ↑72 и ↓11+61
Комментарии103

Стрелочные функции (Arrow functions) в ECMAScript 6

Время на прочтение7 мин
Количество просмотров90K
Arrow functions madness
Одной из самых интересных частей нового стандарта ECMAScript 6 являются стрелочные функции. Стрелочные функции, как и понятно из названия определяются новым синтаксисом, который использует стрелку =>. Однако, помимо отличного синтаксиса, стрелочные функции отличаются от традиционных функций и в других моментах:
  • Лексическое связывание. Значения специальных переменных this, super и arguments определяются не тем, как стрелочные функции были вызваны, а тем, как они были созданы.
  • Неизменяемые this, super и arguments. Значения этих переменных внутри стрелочных функций остаются неизменными на протяжении всего жизненного цикла функции.
  • Стрелочные функции не могут быть использованы как конструктор и кидают ошибку при использовании с оператором new.
  • Недоступность «собственного» значения переменной arguments.

Было несколько причин для введения этих отличий. Первоочередная — это то, что связывание (binding) используется довольно часто в JavaScript. Очень легко потерять нужное значение this при использовании традиционных функций, что может привести к непредсказуемым последствиям. Другая причина, это то, что JS-движки смогут легко оптимизировать выполнение стрелочных функций за счет этих ограничений (в противоположность традиционным функциям, которые могут быть использованы в качестве конструктора и которые свободны для модификации специальных переменных).

Подробности
Всего голосов 118: ↑110 и ↓8+102
Комментарии62

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность