• 8 вещей, из-за которых не стоит жить в Силиконовой Долине

      Disclaimer 1: Я живу в долине уже 4 года, где работаю на позиции программиста в главном офисе Google.

      Disclaimer 2: Я знаю, что иногда долину называют Силиконовой, иногда Кремниевой. Я лично предпочитаю «Силиконовая», хотя оба варианта правильные.

      Самый важный disclaimer: Все нижеописанное рассказывает только про недостатки — эта статья изначально задумана как односторонняя. В Долине еще куча достоинств, про которые я тут не пишу. И для очень многих (включая меня) эти достоинтсва перевешивают недостатки. Поэтому мы не собираем чемоданы, а остаемся здесь жить.

      Важный Update: Это односторонняя статья, только про недостатки. В Долине есть достоинства, и о них я тоже писала, просто отдельно. Просто позже ссылку пришлось убрать, как как мой сайт пал жертвой хабраэффекта.

      Не так давно я писала про поиск работы для программиста в США. И первое место, которое приходит на ум при разговоре о США и программистах — это конечно же Силиконовая Долина. У нее богатая история, есть неоспоримые достоинства, да и зарплаты для программистов там вполне приличные. Но идеальных мест не бывает, и у долины тоже есть свои недостатки. О них сегодня и пойдет речь.

      Итак, приступим…

      Цены на недвижимость


      О цены, сколько в этом слове? Итак, допустим, вы хотите дом в хорошем районе, с хорошими школами. Сколько такой дом стоит? Давайте попробуем найти дом с максимальной ценой в 1 миллион в Palo Alto:

      Нашелся. Адын штук:



      Видок у дома как минимум сомнительный:


      Читать дальше →
    • Краткое введение в SIM-карты

        Когда на вопрос «кем вы работаете?» я отвечал «разработчиком ПО для SIM-карт», даже технически подкованные люди частенько удивлялись. Многие думают, что SIM-карта это «что-то типа флешки».

        В этой статье я постараюсь кратко рассказать что такое SIM-карта (и смарт-карты в общем), зачем она нужна и что у нее внутри.

        На самом деле SIM-карта — это частный случай контактной смарт-карты с микропроцессором. По сути, представляет из себя достаточно защищенный микрокомпьютер с CPU, ROM (опционально), RAM и NVRAM (которая выступает в качестве аналога жесткого диска в PC), с аппаратными генераторами случайных чисел и аппаратной реализацией крипто-алгоритмов.

        В некотором приближении архитектуру микропроцессорной смарт-карты можно представить так:
        Архитектура смарт-карты

        Читать дальше →
      • Выразительный JavaScript: Функции

        • Translation

        Содержание




        Люди считают, что компьютерные науки – это искусство для гениев. В реальности всё наоборот – просто множество людей делают вещи, которые стоят друг на друге, будто составляя стену из маленьких камушков.

        Дональд Кнут


        Вы уже видели вызовы функций, таких как alert. Функции – это хлеб с маслом программирования на JavaScript. Идея оборачивания куска программы и вызова её как переменной очень востребована. Это инструмент для структурирования больших программ, уменьшения повторений, назначения имён подпрограммам, и изолирование подпрограмм друг от друга.

        Самое очевидное использование функций – создание нового словаря. Придумывать слова для обычной человеческой прозы – дурной тон. В языке программирования это необходимо.

        Средний взрослый русскоговорящий человек знает примерно 10000 слов. Редкий язык программирования содержит 10000 встроенных команд. И словарь языка программирования определён чётче, поэтому он менее гибок, чем человеческий. Поэтому нам обычно приходится добавлять в него свои слова, чтобы избежать излишних повторений.
        Читать дальше →
        • +22
        • 203k
        • 7
      • WinJS 3.0 – релиз для всех платформ

        • Translation


        Команда проекта «Библиотека Windows для JavaScript» (WinJS) спешит сообщить о первом релизе с момента представления открытого проекта на конференции //BUILD 2014 – библиотеке WinJS 3.0. Релиз WinJS 3.0 предлагает разработчикам:

        • Кроссбраузерную/кроссплатформенную поддержку, охватывающую наиболее распространенные декстопные и мобильные браузеры, а также основанные на HTML среды приложений, такие как Apache Cordova

        • Модульный подход, предоставляющий разработчикам контроль над оптимизацией производительности и загрузкой только тех модулей библиотеки WinJS, которые необходимы для их веб сайта или приложения

        • Улучшенный дизайн универсальных элементов управления, обеспечивающий более комфортную работу для конечных пользователей и охватывающий телефоны, планшеты, компьютеры — форм-факторы с различными размерами экранов и устройства ввода

        Читать дальше →
      • Баг или фича fieldset?

          Знаете ли Вы, уважаемые читатели, про такой замечательный и, я бы сказал, прикольный тег fieldset? Думаю, конечно знаете! А часто ли Вы им пользуетесь? Думаю очень редко. Ну ладно, ладно, уговорили — именно вы, уважаемый, достаточно часто его используете, а вот верстальщик Вася из соседней фирмы — точно редко, а может и всего один раз его «пробовал на вкус», когда узнал про него. Ну да ладно, не об этом речь. Если Вы часто его использовали, то возможно натыкались на необычное поведение fieldset, а именно игнорирование width, если вложенный элемент шире и ни какие overflow делу не помогают. Сразу приведу пример. Этот и последующие примеры смотреть в актуальных версиях FF (32) и Хром (35); IE11, как ни странно, показал себя с лучшей стороны и отработал правильно; остальные браузеры не проверял.

          Внимание! В статье все примеры упрощены до максимума — до одного вложенного элемента!
          Читать дальше →
          • +12
          • 15.4k
          • 9
        • Sqimitive.js — Frontend Primitive или «Backbone без фантиков»

            Уже довольно давно большинство сайтов перестало быть набором HTML/PHP/CSS/JS-файлов, которые достаточно просто загрузить на сервер. Bower, Grunt, Component.js, AMD, Require.js, CoffeeScript, Clojure, Composer, npm, LESS и ещё 100500 инструментов — всё это сегодня применяется для сборки проектов, обновления компонентов, загрузки зависимостей, сжатия кода, компиляции из одного JavaScript в другой, подтасовки карт, прополки огорода и даже готовки яичницы.

            Многих людей это вдохновляет. Да что там — 95% моих знакомых в один голос твердят, как подключив всего пару-тройку библиотек с особой, уличной магией можно забабахать сайт на over-9000 зелёных австралийских долларов — и всего за один вечер, с перерывом на кофе и бублики.

            А я — странный человек. Не люблю смешения языков, технологий, библиотек. Angular, Knockout, React — они все хороши, но каждая — по-своему сложна. А ведь есть и «гибриды», где сходится сразу несколько миров — как Ember и Knockout.Bootstrap. Вдобавок, многие построены на jQuery — впрочем, к ней даже у меня претензий нет; наверное, таким и должен был быть JavaScript.

            Как бы то ни было, реальность беззастенчиво входит в контакт с мечтами и расставляет точки над «i». Мне так же приходится писать на «new & popular» — а когда пишешь, душа томится и просится создать очередной велосипед… а ей разве откажешь? Она ведь как дитя малое.

            Велосипед был создан. Велосипед без фантиков. Такой же простой, как автомат Калашникова, и многогранный, как швейцарский нож, где вместо наследования — события, вместо моделей, коллекций и представлений — один класс, с неограниченной вложенностью и полной свободой действий, почти в два раза меньший Backbone.js, использующий Underscore.js и, необязательно, jQuery/Zepto.

            Добро пожаловать в Sqimitive.
            Zen Book: введение в нирвану
          • Система пакетов в Meteor

            • Tutorial
            Начиная с версии 0.9.0 (примерно пару месяцев назад) в Meteor обновилась система пакетов, созданная на основе Atmosphere. С выходом новой системы пакетов, каждому пользователю стали доступны создание и публикация собственных пакетов. По состоянию на текущий момент в системе более 1800 пакетов и насчитывается около 500 контрибьюторов.

            Про сам Meteor, Meteorite и Atmosphere уже неоднократно писали на хабре, я же хочу поделиться опытом именно в создании пакетов для этого фреймворка.

            Эта статья о том, зачем нужна очередная система пакетов, как ей пользоваться, как создавать, тестировать и публиковать пакеты.
            Читать дальше →
          • PHP-фреймворк Badoo

              Код нашего сайта повидал уже не одну версию PHP. Он неоднократно дополнялся, переписывался, модифицировался, рефакторился — в общем, жил и развивался своей жизнью. В это время в мире появлялись и исчезали новые best practice, подходы, фреймворки и тому подобные явления, облегчающие жизнь разработчику и готовые решить все основные проблемы, возникающие в процессе создания веб-сайтов.
              В этой статье мы расскажем о нашем пути: как был организован код изначально, какие возникали проблемы и как появился текущий фреймворк.

              Что было


              Проект начали делать еще в 2005 году. Тогда никаких жестких правил по написанию кода и четко структурированного фреймворка не было. Код писали несколько разработчиков, они легко в нем ориентировались и его поддерживали, каждый привносил что-то свое. В то время известные сейчас фреймворки только создавались, поэтому примеров для подражания было мало. Так что можно сказать, что наш фреймворк образовался стихийно.

              С архитектурной точки зрения это выглядело так: были объекты страниц, наследуемые от целой иерархии базовых классов, отвечающих за инициализацию окружения, сессии, пользователя и т.п. Каждая страница сама решала, когда, как и что ей выводить, делать редирект и т.п. В иерархии базовых классов было собрано много вспомогательных функций для инициализации и генерации стандартных блоков страниц, проверки пользователей, показа промежуточных промо-страниц и т.п. Со временем большинство из них было переопределено наследниками до неузнаваемости, что в разы усложнило и понимание того, как работает сайт, и саму поддержку кода.
              Читать дальше →
            • Видео докладов с FrontTalks

              19 сентября в Екатеринбурге прошла конференция сообщества фронтенд-разработчиков.

              Ниже представлены видео-записи докладов.

              Как сделать Инстаграм в браузере (Дмитрий Дудин, xbSoftware)



              • достоинства и недостатки Canvas, WebGl, SVG и CSS-фильтров и шейдеров;
              • неизведанный мир SVG-фильтров, его продуманные до мелочей устои, синтаксис и правила;
              • возможности обработки изображений — от простых чёрно-белых картинок до нелинейных искажений и градиентных карт.

              Читать дальше →
            • Алгоритмы поиска путей на JavaScript



                Поиск оптимального маршрута юнита к цели на неизвестной карте — одна из самых сложных задач при разработке игры. К счастью, существует некоторое количество алгоритмов, которые решают эту задачу. Есть и отличная библиотека PathFinding.js с поддержкой 11 таких алгоритмов.
                Читать дальше →
              • Генератор функциональных парсеров на JavaScript (с трансдьюсерами)

                Всем привет!

                Увидел, что статья о трансдьюсерах на JavaScript стала вполне популярной и хотел отметить, что уже давно доступен генератор парсеров на транзисторах^W трансдьюсерах. По крайней мере, очень на это похоже. У меня есть статья с подробным описанием на английском «Generating Functional Parsers» и, собственно, исходники.

                Тут какие-то новые правила, постов-ссылок уже нет, просят всё обильно описывать — так что я подчинюсь и парой слов (разбавленных необходимой водой), расскажу, о чём это, а то могу ведь и не прав оказаться. Тем более русской версии статьи пока нет, да и скорее всего не будет. Одна надежда, что эта пройдёт.
                Читать дальше →
                • +10
                • 7.6k
                • 7
              • Что нового в Laravel 5?



                Несколько месяцев назад в студии, где я работаю, было принято решение всей командой перебраться на Laravel. Последние пару лет популярность этого фреймворка неустанно росла, и, как оказалось, не напрасно!

                Я не считаю себя гуру в php и фреймворках. До этого пару раз работал с первым и вторым зендом, бессмертным битриксом, сталкивался с Yii и Symfony, изобретал велосипеды сам, но каждый раз у меня оставалось смутное чувство неудовлетворенности.

                Например, Zend Framework всегда вызывал у меня желание побыстрее выполнить задачу и забыть о нем как о страшном сне. Сторонники этого фреймворка конечно не согласятся со мной, и я ни в коем случае не хочу критиковать их выбор. Каждому свое. У меня Zend Framework всегда вызывал ощущение, что код писался не людьми и не для людей.

                Мне всегда казалось, что те же самые задачи можно решать более просто и элегантно. Хотелось найти фреймворк, на котором мне бы нравилось писать. Который я смог бы выучить как свои пять пальцев и заниматься тем, чем мне и нравится заниматься – программированием, созданием чего-то нового. Я думаю, у каждого плотника есть любимый молоток, и такое желание для программиста вполне естественно. Кто из нас, тех кто пишет на php, не поглядывал с завистью на Rails в Ruby или Django в Python?

                Последней каплей стал пост от JetBrains о расширенной поддержке в новой версии PhpStorm 8 шаблонов Blade и Source & Test directories. В этой IDE мы и создали первый проект на Laravel.
                Читать дальше →
              • jQuery.com взломан

                Если ваши сайты содержат ссылки на jquery.com — самое время убрать/заменить, т.к. сайт jQuery.com был взломан.
                We have detected a new compromise of jquery.com and are taking action to mitigate the attack. Updates to follow.— jQuery
                September 24, 2014


                iFrame переадресовывал на сайт, содержащий RIG exploit kit.
                В коде страницы jquery.com был текст:

                Common, guyz!.. All your base are belong to us.
                Just please reinstall dat backdoored openssh deamon. And all will be fine.

                root@jq01:~# who
                scottgonzalez pts/1
                s5fs pts/0
                ryanneufeld pts/3
                gnarf pts/4

                I'm looking for a new job, I'm so sorry for this experiment with iframe, no one was injured, all files was permanently deleted.
                Greetz: Umputun, Bobuk, Gray, Ksenks @ radio-t.com
                My PGP public key is: [key]
              • Визуальный конфигуратор окон, написанный за один час

                Решал интересную задачу – сделать визуальный редактор-конфигуратор окон.

                Подробностями процесса разработки я с вами, коллеги, и поделюсь.


                UPD. Добавил скриншоты.
                UPD2. Речь идет об окнах оффлайновых, застекленных, деревянных или пластиковых — через которые на улицу из дома смотрят

                Спасибо за отклики!
                Читать дальше →
              • [Подборка] Melchior.js, ng-admin, Hello.js, ineed

                • Translation

                Melchior.js


                Melchior.js (GitHub: voronianski/melchior.js, Лицензия: MIT, npm: melchiorjs) от Dmitri Voronianski представляет собой реализацию цепочного определения модулей(CMD), концепцию, введенную John Wu.
                Идея, кроющаяся за цепочными определениями модулей разрешает некоторые неприятные моменты AMD, такие как объемные объявления зависимостей, а так же обеспечивает простоту и читабельность с использованием визуально-дружелюбного и ясного синтаксиса.

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

                Далее
              • Как оказалось, знают все, а понимают не все. Транзакции в mysql и SELECT FOR UPDATE

                По долгу службы мне приходится иногда проводить собеседования на позицию "[старший|младший] разработчик python/django", «тимлид». К моему великому удивлению я обнаружил, что 9 из 10 соискателей, в резюме которых значатся слова " Mysql/Innodb/transactions/triggers/stored proc etc.", абсолютно ничего не могут рассказать о своем прошлом опыте работы с ними. Ни одного описания варианта использования, к сожалению, я так и не получил.
                Читать дальше →
              • Веб-компоненты в реализации Polymer от Google


                Веб-компоненты — это новая эра веб-разработки и почувствовать ее мощь можно уже сегодня при помощи Polymer от Google. Вы можете создавать свои собственные «элементы» (тэги), содержащие шаблон и инкапсулированные стили и логику (js), а так же воспользоваться богатой коллекцией уже готовых элементов.
                Заинтересовались? Прошу под кат.
              • Кроссбраузерный красивый input type=«number»

                  Цель поста: поделиться с разработчиками решением использования кроссбраузерного «input type="number"» или узнать о лучших решениях. Основная проблема состоит в том, что данный тип input`a по-разному отображается в разных браузерах, и кастомизировать его, через css практически не возможно. Данное решение позволяет легко оформить стрелочки в соответствии с дизайном, а так же отобразить их в тех браузерах, в которых не поддерживается нативный «input type="number"».

                  На данный момент плагину передается только один параметр — это селектор, к которому применяется js код:

                  jQuery(function ($) {
                  	$('input[type=number]').iLightInputNumber();
                  });
                  


                  Для примера возьмем три input`a с разными атрибутами:

                  <input type="number" id="input01" step="100" min="0" class="input1" placeholder="Your budget">
                  <input type="number" min="1" max="99" class="input2" placeholder="1">
                  <input type="number" min="1" class="input3 input4" value="1">
                  


                  Рабочий пример.

                  Проверено: opera, chrome, ff, ie9+

                  Читать дальше →
                • Дайджест интересных материалов из мира веб-разработки и IT за последнюю неделю №126 (15 — 21 сентября 2014)

                    Предлагаем вашему вниманию подборку с ссылками на полезные ресурсы, интересные материалы и IT-новости


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