Search
Write a publication
Pull to refresh
72
0
Даниил @Vendolin

User

Send message

Открытое письмо лидерам JS касательно точек с запятой

Reading time6 min
Views5.2K
Такое письмо я получил от Шона Сильвы прошлой ночью:
Я просматривал ваш код для проекта npm.js (в частности, вот этот файл: https://github.com/isaacs/npm/blob/master/lib/npm.js), и заметил, что вы выравниваете запятые под ‘r’ в выражениях var, и под [ и { в литералах массивов/объектов. Мне очень нравится такой способ форматирования, но я не решаюсь его использовать, так как большинство ресурсов о js насаждают страх перед хаосом, который воцарится в коде из-за автоматической расстановки точек с запятой, если вы не будете заканчивать строки чем-нибудь, что предполагает продолжение.
Безопасно ли располагать запятые таким образом в «браузерном» коде, или это только в node возможно?

Я написал несколько абзацев, и решил сократить их до следующего ответа:
Да, это полностью безопасно, и это совершенно валидный JS, понимаемый каждым браузером. Closure compiler, yuicompressor, packer, и jsmin — все могут правильно минифицировать его. Производительность нигде не просядет.
Мне жаль, что вместо того, чтобы обучать вас, лидеры сообщества этого языка прививали вам ложь и страхи. Это позор. Я рекомендую изучить, как на самом деле терминируются инструкции в JS (и в каких случаях они нетерминируемы) — и вы сможете писать код, который сочтете прекрасным.

Читать дальше →

Побеждаем утечки памяти и ускоряем работу Firefox

Reading time3 min
Views224K
Про утечки памяти в Огнелисе на Хабре уже было несколько постов, но ни в одном из них нет полного, с моей точки зрения, набора инструкций. Под катом я попытаюсь собрать все вместе, добавив то, что помогло в решении вопроса мне.

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

А если вам просто понравилась девушка с картинки, то здесь хайрез :)

Читать дальше →

Развитие IT на ближайшие 15-20 лет: про носители можно будет забыть

Reading time5 min
Views15K
Лирическое вступление

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

Немного ностальгии: начало 2000-х

Вспомните уровень информатизации примерно 10 лет назад: 2001 год, только недавно вышла линейка процессоров Intel Pentium 4, считавшаяся воистину технологическим прорывом. Коммутируемые соединения стали потихоньку вымирать, уступая свое место локальным сетям и ADSL.
Для многих геймеров год был тоже важным: вышли такие игры как Grand Theft Auto III, Diablo II: Lord of Destruction, Devil May Cry, Дальнобойщики-2. Имея у себя дома выделенку в 256 килобит/с и персоналку с Pentium 4 и гигабайтом ОЗУ Вы считали себя обладателем самого крутого компьютера. Только что стартовал сервис блогов Livejournal, социальные сети еще не «просочились» в наши светлые умы. World wide web, только что взяв эстафету после FTN-сетей всё прочнее занимал позиции, вскоре совсем вытеснив эхи. Но давайте не будем о грустном.
Проходит всего-лишь каких-то 10 лет, а результат прогресса налицо. Какой результат? Наверное, вы сами сможете сделать какие-то выводы для себя, сделав сравнение.

Общая картина

Из воспоминаний десятилетней давности, вернемся в сегодняшний день. Итак представим, что прямо сегодня и сейчас изобретена машина времени, что мы можем отправиться в будущее прямо сейчас.
По воздуху разгуливает беспроводная связь пятого поколения, которая, вполне возможно, будет передаваться не от базовой станции к клиенту, а как пиринговая сеть. У вас есть подключение? Поделись им с другими.
Социальные сети станут неотъемлемой частью вашей жизни. Если сейчас от них еще можно отказаться, то в будущем это станет практически невозможно. Они станут завязанны со всем: работа, учеба, покупки, общение с друзьями, кредитные карты, знакомства, веб -приложения, без которых будет сложно прожить. Социальные сети полностью заменят Instant Messaging, что означает полную смерть ICQ и прочим IM. Имея доступ в интернет и оставаться при этом анонимным станет практически невозможно. Появятся новые средства авторизации, возможно, основанные на открытых ключах. Облачные вычисления станут чем-то обыденным и при этом жизненно необходимым.
Обычный мобильный телефон в его основном назначении станет большой редкостью: когда сейчас еще можно встретить человека, который пользуется сотовым ради звонков и сообщений, то в будущем не исключено, что главную функцию будет выполнять сеть.
Голосовая связь будет передаваться по средствам Skype или похожих технологий: с развитием беспроводных сетей обычный GSM станет неактуален.
Ситуация на рынке мобильной связи изменится, но не настолько сильно, как можно подумать. «Железо» коммуникаторов дойдет определенной отметки, вполне возможно, почти догнав современные по сегодняшним меркам персоналки.
Наличные деньги будут пользоваться спросом только у более старшего поколения, всё реже будут встречаться магазины, принимающие наличные деньги.
Читать дальше →

CSS кнопки с помощью псевдо-элементов

Reading time5 min
Views47K


Здравствуйте, друзья. За последний месяц я экспериментировал с псевдо-элементами, особенно, с их использованием в создании кнопок. Таким образом, удалось создать крутые эффекты, которые раньше можно было сделать только со спрайтами.

В этом уроке я покажу как создать кнопку с изюминкой, используя только якорный тег и мощь CSS.

Читать дальше →

Строки до 23 символов в Ruby обрабатываются в 1,92 раза быстрее

Reading time3 min
Views2K
Интересный факт: в Ruby 1.9.3 с 64-битным интерпретатором обработка строк длиной 23 и менее символов происходит почти вдвое быстрее, чем строк длиной 24 и более символов. Другими словами, этот код Ruby:

str = "1234567890123456789012" + "x"

… будет обработан в 1,92 раза быстрее, чем этот:

str = "12345678901234567890123" + "x"

Для 32-битного интерпретатора Ruby граница производительности находится в районе 11/12 символов.

Конечно, довольно глупо изучать свой код и уменьшать все строки до 11 или 23 символов. Разница в производительности проявляется только на сотнях тысяч строк. Однако, желающим покопаться во внутренностях замечательного языка Ruby может быть интересно, почему так происходит.
Читать дальше →

«Правильный» system() для PHP-CLI

Reading time2 min
Views13K
Внимание! Все рассуждения относятся к запуску PHP в режиме CLI, а не как модуль веб-сервера!

Если вы когда-либо использовали функцию system() в PHP, вы наверняка задавались вопросом: каким образом system() возвращает последнюю строку для команды, да ещё и выводит результаты исполнения команды на веб-страницу, а не себе куда-то в stdout веб-сервера? И почему system() работает не так, как system() в Си? Ответ, в общем-то, проще, чем может показаться.
Читать дальше →

Используем $_COOKIE как $_SESSION

Reading time2 min
Views12K
Тема пришла из далекого детства, когда я только начинал программировать, разбирал особенности PHP. На тот момент меня удивляла такая несправедливость: c сессией можно было работать как с обычным ассоциативным массивом($_SESSION), а для кукисов необходимо было использовать функцию setcookie(). Потом я уже поднабрался опыта и понял зачем это сделано именно так.
Время идет и PHP не стоит на месте, в нем появилась такая прекрасная вещь как SPL, одна из возможностей которой — обращение к объекту как к массиву, т.е. реализация ArrayAccess интерфейса.
И вот сейчас я вспомнил о своей детской идее, о массиве $_COOKIE, и реализовал ее:

<?php
/*
достаточно этой строчки чтобы создать куку как на стороне сервера так и клиента
*/
$_COOKIE['lang'] = 'ru'; 


Реализацию можно посмотреть под катом
Читать дальше →

Работа с памятью (и всё же она есть)

Reading time13 min
Views108K
Существует распространенное мнение, что «рядовому» PHP разработчику практически не нужно заботиться об управлении памятью, однако «заботиться» и «знать» всё же немного разные понятия. Попытаюсь осветить некоторые аспекты управлению памятью при работе с переменными и массивами, а также интересные «подводные камни» внутренней оптимизации PHP. Как вы сможете убедиться, оптимизация это хорошо, но если не знать как именно она «оптимизирует», то можно столкнуться с «неочевидными граблями», которые могут вас заставить изрядно понервничать.

Читать дальше →

Сканируем в 3D с помощью фотоаппарата или 123D Catch

Reading time3 min
Views134K
В современном мире трехмерные технологии стали очень популярны. 3D стремительно и разнообразно входит в жизнь даже обычного человека. Начиная от 3D телевизоров, 3D сканеров и даже принтеров. Хотя последние два устройства в большей степени пока доступны только специалистам. Но технологии не стоят на месте. Появляются трехмерные принтеры стоимостью около $2000, что уже приближает время, когда они появятся, если не у каждого школьника/студента на столе, то как минимум, у каждого инженера или дизайнера. Что касается методов получения трехмерной модели с реального физического объекта, то тут тоже не все однозначно. Требуются наличие либо дорогостоящего лазерного сканера, либо можно попытать счастье с помощью лазерного строительного уровня, веб-камеры и специального программного обеспечения. Наличием всех этих вещей тоже не может похвастаться абсолютно любой человек.
Однако есть очень простой способ “сканировать” объект в 3D модель, используя обычный цифровой фотоаппарат. Как это сделать? Об этом и пойдет речь далее.
Читать дальше →

ResumUP — представьте себя

Reading time1 min
Views3.4K
«Сталкиваясь с информационными перегрузками, мы не имеем другой альтернативы кроме восприятия по образцам (стереотипам)» Маршалл Маклюэн

Привет всем! Многие уже наверное слышали, а некоторые уже пробовали сервис ResumUp.com. Вы могли слышать о нас по результатам конкурсов WebReady и TechCrunch Moscow. Мнение российских и международных экспертов, конечно, ценно, но живая обратная связь пользователей для нас куда важнее. Также, в связи с локализацией сервиса для российского рынка, мы хотим еще раз пробежаться по основной идее и функционалу сервиса.
Суть проекта — визуализация ваших профессиональных достижений и, как следствие, вашего резюме. Поэтому я постараюсь обойтись минимумом слов и представить сервис визуально.


Читать дальше →

Демоны на PHP

Reading time4 min
Views76K
Памятка начинающему экзорцисту.

Прежде, чем начать: я знаю, что такое phpDaemon и System_Daemon. Я читал статьи по этой тематике, и на хабре тоже.

Итак, предположим, что вы уже определились, что вам нужен именно демон. Что он должен уметь?
  • Запускаться из консоли и отвязываться от неё
  • Всю информацию писать в логи, ничего не выводить в консоль
  • Уметь плодить дочерние процессы и контролировать их
  • Выполнять поставленную задачу
  • Корректно завершать работу

Отвязываемся от консоли


// Создаем дочерний процесс
// весь код после pcntl_fork() будет выполняться двумя процессами: родительским и дочерним
$child_pid = pcntl_fork();
if ($child_pid) {
    // Выходим из родительского, привязанного к консоли, процесса
    exit();
}
// Делаем основным процессом дочерний.
posix_setsid();

// Дальнейший код выполнится только дочерним процессом, который уже отвязан от консоли

Читать дальше →

История стартапа Questli: на глобальный рынок из Сибири

Reading time2 min
Views955
Есть мнение, что если у вас качественный продукт, то инвестор на него найдется сам. Но я хотела бы добавить, что в случае, когда вы из Сибири и вам нужна еще и толика удачи, чтобы оказаться в нужное время в нужном месте и попросту не ступить.

Сегодня я расскажу историю об одном герое из города Новосибирск, которого зовут Данила Козятников. Он является основателем проекта Questli.com – краудсорсинговой веб платформы, где при выполнении заданий (квестов) вы можете зарабатывать деньги.

Данила — предприимчивый молодой человек, в 2010 году получил подарок судьбы в виде бесплатного билета на Le Web 2010 (это был последний билет в розыгрыше того года). И все. На этом удача закончилась, и начались трудовые будни. Потому как именно благодаря проделанной домашней работе Данила и его команда смогли добиться таких потрясающих результатов, получить награду Audience Choice Award на TechCrunch Disrupt 2011 и стать спикерами на Le Web 2011 в Париже.


Читать дальше →

Обновления Live Tiles в фоновых агентах

Reading time7 min
Views4.7K

По моему мнению, одной из сильных сторон Windows Phone является его дизайн. Точнее концепция дизайна, которую может использовать разработчик для получения максимума отдачи при разработке своих приложений.

Одна из ключевых концепций – Live Tiles или «живые тайлы» — «иконки приложений на стероидах». Правильное использование Live Tiles привязывает пользователя к приложению и даёт совсем другие ощущения при использовании. Например, когда я выбирал приложение для прогноза погоды, ключевым критерием для меня являлось то, чтобы приложение имело Live Tile и оперативно обновляло прогноз. В результате, после настройки приложения и закрепления Live Tile на стартовом экране, я практически больше это приложение не запускал, но при этом, сразу же после снятия лок-скрина вижу оперативную информацию о погоде.

Хороший пример, подумаете вы, но как нам сделать так?
Читать дальше →

Игры на CANVAS/WebGL

Reading time1 min
Views12K

Vortal Combat


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

Читать дальше →

Битовые операции в PHP на примерах

Reading time3 min
Views90K
Навеяно статьей об обработке критических ошибок в PHP. Обратил внимание, что несмотря на то, что коды ошибок в PHP специально заточены под битовые операции, тем не менее, что в примерах статьи, что в комментариях, для проверки кодов ошибок используются обычные операторы сравнения.

Например, встречались такие варианты:
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
или
if(in_array($error['type'], array(E_ERROR, E_PARSE,  E_COMPILE_ERROR)) {…}

В связи с этим решил написать небольшую статью о битовых операциях с примерами их использования.
Читать дальше →

Эволюция геймплея на примере одной игры

Reading time7 min
Views4.3K
В конце ноября сего года на платформе Android и, неделей позже, на iOS вышла наша игра под названием Voltage (Android, iOS, Gameplay Video). Небольшой историей её создания я и хочу поделиться с сообществом. Следует сразу предупредить, что это не «success story», не инструкция по обращению с издателями и уж точно не теоретическое введение в разработку игровых приложений.

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

Читать дальше →

Кухонный компьютерный стол

Reading time3 min
Views63K
image

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

Идея преображения кухонного стола в компьютерный возникла во время прогулки по известному шведскому магазину, где я увидел стол с поднимающейся крышкой — экономия пространства, удобство и уют в одном лице. Но мне он не подходил по двум причинам: цена (около 7500 руб.) и поверхность столешницы — явно не для кухни.
Читать дальше →

Кроссплатформенность — это круто

Reading time8 min
Views30K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Ни для кого не секрет, что сегодня мобильные игры очень популярны. Возможность написать одну из таких игр есть у каждого разработчика, даже начинающего. Часто возникает вопрос с выбором платформы. Конечно, хочется, чтобы игра была сразу везде: на iOS и Android, на WP7 и MeeGo, на десктопе и в браузере. И чтобы все это можно было лекго реализовать с помощью бесплатных инструментов.



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

Разгони свой сайт – автоматическая СКЛЕЙКА + GZIP

Reading time9 min
Views16K
Разгонись

Есть куча советов как убыстрить отдачу сайта – это и статика через nginx и кластеризация и куча еще всяческих хитрых технологий. Однако во всех книжках, советующих как можно повысить загрузку сайтов можно найти две постоянно повторяющиеся темы – «склеивание CSS/JS» и «включение сжатия».
Читать дальше →

Быстрый роутинг на PHP

Reading time3 min
Views45K
image
Уходя от использования роутинга в .htaccess файле, в первую очередь пришёл к стандартному направлению на index.php: разбирал там URL и вызывал соответствующие контроллеры — долгое время был доволен такой техникой. Однако совсем недавно осознал, что что-то делаю не так, что можно сделать эффективнее и лучше.
Далее я расскажу о своём роутинге, использующем XML для хранения правил и в последующем использующем его сериализованный вид.
Читать дальше →

Information

Rating
Does not participate
Location
Mountain View, California, США
Date of birth
Registered
Activity