• Получаем банковскую карту, находясь за границей



      Есть несколько вопросов, которые встают перед фрилансерами, осознавшими, что их образ жизни больше не привязывает их ни к какой конкретной точке на карте. Один из важнейших — это средство хранения денег и платежей. Карты русских банков по ряду причин становятся неудобны при длительном пребывании за границей — например, в случае утери, блокировки и необходимости восстановления. Или, например, при необходимости завести новый счёт в другой валюте — не полетишь же специально в Россию за этим? В последнее время добавились и политические риски. Но в итоге всё сводится к вопросу чисто логистическому: как получить банковскую карту, находясь за пределами родной страны.
      Читать дальше →
    • Как писать парсеры на JavaScript

        … а именно как писать LL парсеры для не очень сложных структур при помощи конструирования сложного парсера из более простых. Изредка возникает необходимость распарсить что то несложное, скажем некую XML-подобную структуру или какой нибудь data URL, и тогда обычно возникает либо простыня хитрого трудно читаемого кода либо зависимость от какой то ещё более сложной и хитрой библиотеки для парсинга. Здесь я собираюсь совместить несколько известных идей (какие то из них попадались на Хабре) и показать как можно просто и лаконично написать довольно сложные парсеры уложившись при этом в совсем немного строчек кода. Для примера я буду писать парсер XML-подобной структуры. И да, я не буду вставлять сюда картинку для привлечения внимания. В статье вообще картинок нет, поэтому читать будет трудно.

        Читать дальше →
      • Классические паттерны проектирования на Scala

        • Перевод
        Об авторе:
        Pavel Fatin работает над Scala plugin'ом для IntelliJ IDEA в JetBrains.

        Введение



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

        Содержание статьи составляет основу моего выступления на JavaDay конференции (слайды презентации).

        Читать дальше →
      • Интересные приемы программирования на Bash

        Эти приемы были описаны во внутреннем проекте компании Google «Testing on the Toilet» (Тестируем в туалете — распространение листовок в туалетах, что бы напоминать разработчикам о тестах).
        В данной статье они были пересмотрены и дополнены.
        Читать дальше →
      • Тестировщик — больше, чем профессия

          За время своей работы в сфере тестирования, у меня сложилось своё, особое мнение об этой области, начиная с позиции младшего тестировщика (junior tester) до руководителя отдела тестирования (test manager). И, в целом, это мнение достаточно критичное с долей любви и обожания к этой замечательной профессии.



          Читать дальше →
        • 8 ловушек программирования



            Эта статья содержит те ловушки программирования, в которые я попадал сам, продолжаю попадать и возможно никогда не прекращу, а также те, в которых я находил своих товарищей.

            Однако я верю в то, что их можно избежать, если знать в какие ловушки можно попасть и как из них выбираться. Возможно эта вера — очередная ловушка.
            Читать дальше →
          • Установка php5.5+php-fpm+mysql+nginx на Mac OS X Mavericks

            • Перевод
            • Tutorial
            Каждый веб-разработчик, выбравший Mac, после первичной настройки системы ищет рабочий инструментарий. И если c IDE и редакторами всё понятно, то что-либо подобное по удобству win-довым OpenServer или Denwer за бесплатно найти трудно. Есть отличное решение MAMP PRO, но оно стоит две тысячи деревянных. Да и работа через Apache некоторых может смутить.

            Занимаясь решением этого вопроса, набрёл на интереснейший материал, который рассказывает о том, как при помощи консольного пакет-менеджера Homebrew настроить рабочее пространство буквально за 5-10 минут. Публикую его перевод, потому что кому-нибудь подобная инструкция по настройке веб-окружения на Mac обязательно пригодится.

            Читать дальше →
          • Битовые операции в PHP на примерах

              Навеяно статьей об обработке критических ошибок в 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)) {…}

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

                *много букв, местами неполиткорректно, текст лежал в столе 5 лет

                image Первое знакомство с представителями Китая на Сцене произошло через 2 дня после моего «входа» в ту самую Сцену. Мне понадобился доступ к популярному в то время варез-FTP “Typhoon Epicenter” (о том, что он располагался в Гонг Конге я узнал позже). Из всех друзей и знакомых организовать доступ мог только один человек – «приятель знакомого моего друга». Он оказался китайцем по вере и паспорту, и мы некоторое время плотно общались. Именно после знакомства с ним, я стал относиться к китайцам с пассивным интересом.

                Это сумасшедшие в плане доведения своих навыков до абсолюта. Собственно, мы за это их и уважали, потому что у них были "мозги", которых порой не хватало нам – не в плане ума, а в плане кадров. А еще их было много… чертовски много.

                Чаще всего китайцы вызывали у нас 3 вида эмоций: уважение, зависть и раздражение. В годах 1997-2004 любой пират, катающий болванки «Лучший Soft 200x», отдал бы почку за доступ к паре варезных серверов Китая.
                Читать дальше →
              • Что делать если клиент — друг / хороший знакомый?

                image
                Какой бы профессией вы ни владели, каким бы родом деятельности ни занимались — всегда найдётся друг или хороший знакомый, который захочет воспользоваться вашими услугами. Или ему нужно срочно что-то помочь, пофиксить, запилить, прочистить… А вы как раз это умеете, да к тому же ещё и неплохо вроде бы.
                Одно дело — это бесплатная дружеская помощь на пять минут, а совсем другое — сделать целый проект за деньги со сроками в месяц или полгода.
                И вот для этой ситуации у меня есть несколько (для кого-то очевидных!) советов-правил, которыми я бы хотел поделиться, работая в сфере разработки сайтов.

                Несколько правил работы с друзьями в качестве клиентов...
              • Как надо хешировать пароли и как не надо

                  image

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

                  Постараюсь очень лаконично и быстро обрисовать ситуацию с хэшами.

                  Сразу определю какую задачу применения хешей буду рассматривать — аутентификация пользователей. Не токены восстановления паролей, не аутентификация запросов, не что-то еще. Это также не статья про защиту канала передачи данных, так что комментарии по challenge-response и SSL неуместны!

                  Читать дальше →
                • Лучшие практики и рекомендации по защите php-приложений от XSS-атак

                    Лучшие практики и рекомендации по защите php-приложений от XSS-атак


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



                    Большинство уязвимостей связано с неправильной обработкой данных, получаемых извне, или недостаточно строгой их проверкой. Одной из таких уязвимостей является межсайтовое выполнение сценариев (Сross Site Sсriрting, XSS), которая может привести к дефейсу сайта, перенаправлению пользователя на зараженный ресурс, вставке в веб-ресурс вредоносного кода, краже COOKIE-файлов, сессии и прочей информации. Противостоять XSS своими сила поможет применение лучших практик и рекомендаций по безопасному программированию, о которых и пойдет речь ниже.
                    Читать дальше →
                  • Разработка Quick Look plugin для OS X

                    • Tutorial
                    Quick Look — приложение в OS X, которое создает thumbnails (иконки) и previews (окно с описанием/содержимым файла по нажатию пробела в Finder). Оно поддерживает ряд стандартных файлов, для не поддерживаемых можно устанавливать QL plugins — генераторы иконок и/или превью. Они имеют формат .qlgenerator, размещаются в ~/Library/QuickLook и /Library/QuickLook.

                    Я пишу приложения под iOS, иногда под OSX. Со сторонними QuickLook генераторами столкнулся, когда увидел плагин для первью .mobileprovisionProvisioning.
                    .mobileprovision/.provisionprofile — профиль, содержащий сертификаты, допущенные для установки устройства, некоторые параметры для развертывания iOS & OSX приложений.

                    Вот так папка с профилями выглядит без всяких плагинов для Quick Look:

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

                    Сперва я стал использовать open-source Provisioning, потом закрытый, но более красивый и подробный ipaql. Необходимость написания своего открытого решения возникла после того, как автор ipaql добавил совместимость с OS X Mavericks лишь спустя полгода после выхода системы, а отображение иконок не починил до сих пор.

                    Вот что у меня получилось — ProvisionQL.
                    Поддерживаемые типы файлов для создания иконок и превью:
                    • .ipa — iOS packaged application (как из Xcode, так и из AppStore)
                    • .app — iOS application bundle
                    • .mobileprovision — iOS provisioning profile
                    • .provisionprofile — OSX provisioning profile



                    Под катом я расскажу об основных шагах при создании Quick Look плагинов.
                    Читать дальше →
                  • Python: вещи, которых вы могли не знать

                    Python — красивый и местами загадочный язык. И даже зная его весьма неплохо, рано или поздно находишь для себя нечто такое, что раньше не использовал. Этот пост отражает некоторые детали языка, на которые многие не обращают внимание. Сразу скажу: многие примеры являются непрактичными, но, оттого, не менее интересными. Так же, многие примеры демонстрируют unpythonic стиль, но я и не претендую на новые стандарты — я просто хочу показать, что можно делать вот так.
                    Читать далее
                  • Объектная гимнастика

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

                    Объектная гимнастика (англ. Object Calisthenics) — это упражнения в программировании, которые состоят из 9 правил, которые Джефф Бей описал в своей книге «The ThoughWorks Anthology». Пытаясь как можно точней следовать этим правилам, вы измените свои привычки написания кода. Это не значит, что вы должны постоянно соблюдать все эти правила. Найдите баланс и используйте только те, которые вам удобны.

                    Эти правила сфокусированы на читаемости, тестируемости, понятности и поддерживаемости вашего кода. Если вы уже пишите код, который читаем, тестируем, понятен и поддерживаем, тогда эти правила помогут сделать его более читаемым, тестируемым. Понятным и поддерживаемым.

                    Ниже я прокомментирую этих 9 правил:
                    1. Только один уровень отступа в методе
                    2. Не используйте Else
                    3. Оберните все примитивные типы и строки
                    4. Коллекции первого класса
                    5. Одна точка на строку
                    6. Не используйте сокращения
                    7. Сохраняйте сущности короткими
                    8. Никаких классов с более чем 2 атрибутами
                    9. Никаких геттеров, сеттеров и свойств

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

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

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

                      Интересный факт: Оказывается существует целое движение — OpenCourseWare, которое началось в 1999 году в Германии, когда один из университетов разместил видео своих лекций онлайн. Вскоре и други университеты подхватили инциативу и сейчас OpenCourseWare — это достаточно популярная штука, которая представляет из себя курсы и бесплатные учебные материалы, созданные в университетах и распространяющиеся через интернет.
                      Как правило ресурсы OCW не требуют регистрации и не предлагают никаких сертификатов о прохождении. Все обучение — в качестве self-improvement.

                      Под катом список бесплатных онлайн-курсов и уроков от лучших учебных заведений
                      Читать дальше →
                      • +35
                      • 29,5k
                      • 5
                    • Python на Хабре

                        Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
                        Читать дальше →
                      • Видео-курс по JavaScript на русском языке

                          Здравствуй, Хабр!

                          Представляю вам свой курс по JavaScript, недавно прошедний на Хекслете. Курс состоит из семи лекций общей продолжительностью около четырех часов.



                          Первая лекция: Введение в JavaScript, немного истории, числа (тут есть ошибка: функция toFixed округляет значения).



                          Остальное – под катом.
                          Читать дальше →
                        • 8 HTML элементов, которые вы не используете (а следовало бы)

                          image
                          Веб сегодня все больше и больше семантический. Но что означает «семантический»? Почему это важно?

                          Семантический HTML выражает значение документа. Он больше о том, чем является текст, чем о том, как он выглядит. Хорошая семантическая разметка помогает и человеку и компьютеру лучше понять содержимое документа и его контекст.

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

                          Ок, итак семантическая разметка — это хорошо, но как ее использовать. Лучше всего начать с замены обычных тегов на более выразительные. Давайте посмотрим восемь элементов, которые позволят вам войти в эту игру.
                          Читать дальше →
                        • Список бесплатных DNS-сервисов

                            Обновляю 4-летний список бесплатных сервисов для управления доменами

                            Primary + Secondary
                            Сервис Кол-во NS Кол-во доменов Типы записей TTL Доп. фичи
                            pdd.yandex.ru 2 50 AAAA и SRV + Есть API
                            cloudflare.com 2 неограниченное AAAA, SRV, SPF, LOC +
                            2ns.info 4 неограниченное AAAA и SRV + Есть экспорт. Показывает регистратора, дату регистрации домена, дату окончания регистрации, тИЦ. By leonid239
                            dns.he.net 5 50 все + NS доступны по IPv6. Свой DDNS-сервис
                            www.netbreeze.net/dns 3 1 AAAA и SRV + Есть API
                            entrydns.net 3 неограниченное AAAA и SRV + Есть свой DDNS-сервис, REST-api
                            Читать дальше →