RSS
Pages: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
[>] Как я нашел лучший в мире язык программирования. Часть 2
habra.14
habrabot(difrex,1) — All
2015-06-09 09:00:08


Первая часть [здесь][1]. Продолжение: Семь долбаных лет я ждал язык, который хоть как то ответит части моих желаний. За это время, и в фоновом режиме я препробывал всё. Всё — означает, всю херню общего назначения, и всю херню не совсем общего назначения. Нельзя прочувствовать язык только что-то прочитав про него и написав Hello World. Чтобы понять — надо хоть немного попрограммировать — написать какую нить вещь. И вот все это время, я в минуты отчаянья качал какой-нить “замечательный язык”, и пытался что-то написать. Какие-то вещи даже до сих пор крутятся в конторе (или крутились). [Читать дальше →][2]

[1]: http://habrahabr.ru/post/259831/
[2]: http://habrahabr.ru/post/259841/#habracut

[>] Swift 2.0 будет с открытым кодом в конце года
habra.14
habrabot(difrex,1) — All
2015-06-09 11:00:02


8 июня на проводимом ежегодно [WWDC][1] компания Apple анонсировала новую версию языка Swift 2.0 ![][2] Как написано в [блоге Swift][3] и [на странице для разработчиков на Swift][4] новая версия получила более высокую производительность, новое API обработки ошибок, улучшения синтаксиса языка, а также функцию проверки доступности функций Swift для целевых ОС. На мой взгляд самое интересно – Apple открывает код Swift. Да, Swift 2.0 это Open Source язык программирования. [Читать дальше →][5]

[1]: https://ru.wikipedia.org/wiki/Worldwide_Developers_Conference
[2]: https://habrastorage.org/files/a47/9e5/377/a479e5377b5140c2b0fcf9240a67c1a8.png
[3]: https://developer.apple.com/swift/blog/
[4]: https://developer.apple.com/swift/
[5]: http://habrahabr.ru/post/259853/#habracut

[>] [Перевод] Неразбериха с названиями должностей
habra.14
habrabot(difrex,1) — All
2015-06-09 11:00:02


До сих пор, мое продвижение по карьерной лестнице было быстрым. В 2008 году, я начал работать на полную ставку программистом в должности **Junior Developer**. Там был славный босс и классные коллеги, и я получил первые навыки использования Java и .NET. Это был полезный опыт. После 2-х лет на той работе, я чувствовал, что настало время двигаться дальше… [Читать дальше →][1]

[1]: http://habrahabr.ru/post/259763/#habracut

[>] Безумный PHP. Фьюри код
habra.14
habrabot(difrex,1) — All
2015-06-09 12:00:02


[][1]

#### Сборник PHP нормальностей или что надо знать чтобы не сойти с ума и не прострелить себе что-нибудь

Прочитал статью [mnv][2]: "[Приведение типов в PHP == табурет о двух ножках?][3]" и захотелось в комментариях добавить немного дополнений, но… Но потом увидел комментарий и понял, что лучше дополню статью тем, про что мало кто пишет и мало где это имеется в централизованном виде. Вроде бы всем известная тема, а все же кому-то в новинку. Это не совсем про приведение типов, но они тоже есть. Это про особенности, зная которые можно делать меньше ошибок. **Если интересно, го под кат, я создал!** [Читать дальше →][4]

[1]: https://habrastorage.org/files/e3e/595/dc5/e3e595dc5182459b823b5ad87e69e078.jpg
[2]: http://habrahabr.ru/users/mnv/
[3]: http://habrahabr.ru/post/259497/
[4]: http://habrahabr.ru/post/259865/#habracut

[>] Как я нашел лучший в мире язык программирования. Часть 1
habra.14
habrabot(difrex,1) — All
2015-06-09 12:30:02


Поскольку дальше я буду жестко провоцировать троллей на тему языков программирования, и тем более назову лучший в мире (на данный момент) язык программирования (абсолютно лучший, то есть без всяких оговорок), от чего, обычно, у троллей срывает башню, рекомендую им и всем остальным ознакомиться с моим постом почти трех летней давности [«О выборе языка программирования»][1], все написаное там актуально и повторяться я не хочу. Прочитали? Дальше будет про _лучший в мире язык программирования_, который я назову ближе к концу. Да, да, еще три дня назад я и не думал что единороги существуют — ведь каждый язык так или иначе сосет, и каждый сосет по-своему (хотя нет, есть и такие которые сосут всегда и везде, но о них не будем). Как инженер, я прекрасно понимал что в вопросе языка не возможно без разнообразных trade offs, начиная с garbage collected vs manual memory management, хотя Rust _пытается_ съесть рыбку не присев на палку в этом вопросе, и так далее. Хоть мы и говорим о языках общего назначения, все они так или иначе позиционируют себя, фокусируясь на каких-то идеях, принципах, и целях, в которых они хороши, оставляя все не согласованное с такими принципами в лучшем случае возможными, но не эффективными и/или не удобными. Одним словом нецелесообразными. _Однако язык, сочетающий в себе несочетаемое, есть_. [Читать дальше →][2]

[1]: http://ru.xored.com/2012/12/02/scala/
[2]: http://habrahabr.ru/post/259831/#habracut

[>] Жизнь без DDoS
habra.14
habrabot(difrex,1) — All
2015-06-09 13:00:02


_DDoS-атаки случаются всё чаще – в последние годы они вышли на первое место в перечне сетевых угроз для корпоративных клиентов и операторов связи. Защита от них – актуальная проблема не только для каждого интернет-бизнеса, но и для многих других компаний, использующих веб-ресурсы. Как правило, такие атаки направлены на вывод из строя критически важных приложений и ресурсов владельца. Сегодня средства защита клиентов от такого рода атак – необходимый элемент в арсенале любого крупного оператора дата-центра._ Рост киберпреступности повлёк за собой широкое использование DDoS-атак со всеми вытекающими последствиями. **DDoS** (Distributed Denial of Service) – одновременная атака системы с большого количества компьютеров – обычно имеет целью затруднить или сделать невозможным доступ пользователей к веб-сайту или интернет-сервису. Простота проведения DDoS-атак делает этот способ доступным даже для рядового программиста, который не имеет большого опыта подобной деятельности. Да и стоит «услуга DDoS» совсем недорого: по данным Arbor Networks, атака, способная «положить» сайт небольшой компании на неделю, обойдётся примерно в [150 долларов][1]. [][2]



[Читать дальше →][3]

[1]: http://habrahabr.ru/company/ua-hosting/blog/233903/
[2]: http://habrahabr.ru/company/safedata/blog/259815/
[3]: http://habrahabr.ru/post/259815/#habracut

[>] Разработка OS на Go+asm Part 0x01
habra.14
habrabot(difrex,1) — All
2015-06-09 13:00:02


Приветствую, %username%. Перед вами вторая статья из цикла о разработке ОС на Go + asm. [Part 0x00][1] Part 0x01 Изначально я планировал, что вторая статья будет про обработку прерываний, но Go накладывает свои корректировки — сейчас будет описанно простое выделение памяти и часть рантайма Go, которая нам пригодится, но будет переписанно. На самом деле это подготовка к третьей статье — куче и допиливанию рантайма. Кода к этой статье на гитхабе не будет (забыл вовремя сделать коммит, а теперь банально лень специально восстанавливать, если кто пришлет пулл реквест — буду благодарен) _Слабонервным просьба закрыть статью — все, что может быть написанно на Go будет написанно на нем!_ [Продолжение извращений][2]

[1]: http://habrahabr.ru/post/259719/
[2]: http://habrahabr.ru/post/259839/#habracut

[>] Визуальный граф вызовов: VTune Amplifier и не только
habra.14
habrabot(difrex,1) — All
2015-06-09 13:00:02


Многим нравится представление структуры программы в виде call graph, «графа вызовов функций». Особенно интересно, если этот граф отражает профиль производительности, наиболее «горячие» ветки кода. Граф вызовов можно получить с помощью Intel® VTune™ Amplifier XE, но для этого нам понадобится ещё пара утилит. ![][1] [Читать дальше →][2]

[1]: https://habrastorage.org/files/3e1/bff/c21/3e1bffc216ad47209cc8e26ced921af6.png
[2]: http://habrahabr.ru/post/259863/#habracut

[>] Должны ли роботы учить детей разговаривать?
habra.14
habrabot(difrex,1) — All
2015-06-09 13:00:02


![][1] Едва мы придумали само понятие «робот», как начали мечтать о том, как роботы будут во всём помогать нам. И не просто помогать, а заменять нас во всевозможных сферах деятельности. Сейчас уже пришло понимание, что столь сложные роботы появятся ещё не скоро. Но мы к этому стремимся, разрабатывая технологии искусственного интеллекта. И когда-нибудь всё-таки сбудется человеческая мечта об универсально роботе, способном и посуду помыть, и в магазин сходить, и за детьми приглядеть. А приглядывать можно по-разному. Велик соблазн спихнуть на робота и не слишком–то приятные обязанности по обучению подрастающего поколения, в том числе и самым азам. Например, роботы-няньки могли бы не только следить, чтобы подопечные не покалечились, были накормлены и в чистых трусах. Всё-равно ведь сидят с ребёнком, так пусть поучат, например, говорить. И здесь возникает проблема. Суть её вовсе не в том, как будут выглядеть эти самые роботы, их форма может быть любой — хоть ящик на колёсиках. Нет, всё гораздо глубже и сложнее. Обучение ребёнка речи строится по определённым алгоритмам. И эти алгоритмы не могут быть нейтральными, они всегда будут отражать культуру, идеологию, жизненные принципы, философию наконец, тех людей, кто их разрабатывает. И стоит ли доверять формирование культуры речи неизвестным людям, возможно, идеологический чуждым? [Читать дальше →][2]

[1]: https://habrastorage.org/files/348/bed/4a5/348bed4a5f644a6eb228bbf54d8452e7.jpg
[2]: http://habrahabr.ru/post/259867/#habracut

[>] [Из песочницы] USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega
habra.14
habrabot(difrex,1) — All
2015-06-09 17:30:02


[][1] Наша лаборатория занимается, в числе прочего, измерением электросопротивления различных образцов. Основные рабочие лошадки нашей измерительной установки — цифровые мультиметры американской компании Agilent, такие как 34401A. Кроме этого, долгое время лежали неиспользуемыми несколько стареньких, но рабочих вольтметров В7-28 (один из них на фото). Данный вольтметр, правда, уступает по точности и быстродействию «американцам», но всё равно достаточно хорош: точность до 5 десятичных цифр, приемлемая шумность, экранированные входы, а главное — возможность дистанционного управления с ПЭВМ (которые теперь зовутся ПК). Использовать их не получалось по следующим причинам: [Читать дальше →][2]

[1]: https://fotki.yandex.ru/next/users/twentysix/album/474006/view/1161469?page=0
[2]: http://habrahabr.ru/post/259919/#habracut

[>] Топ-3 частых ошибок, обнаруженных при аудите безопасности сайта
habra.14
habrabot(difrex,1) — All
2015-06-09 17:30:02


![][1] Сегодня я продолжу цикл статей, посвященных веб-безопасности. Для кого-то эта информация может показаться не новой, для кого-то она может стать поводом к размышлению. Ошибки будут указаны по средней частоте и пронумерованы согласно Open Web Application Security Project (OWASP) TOP 10. [Читать дальше →][2]

[1]: https://habrastorage.org/files/f4b/5c2/2f5/f4b5c22f52314e7a82f053e006514d71.jpg
[2]: http://habrahabr.ru/post/259887/#habracut

[>] Под прессом. Ломаем и защищаем Wordpress своими руками
habra.14
habrabot(difrex,1) — All
2015-06-09 17:30:02


![][1] WordPress — это удобная блог-платформа для публикации статей и управления ими, на которой базируется огромное число различных сайтов. Из-за своей распространенности эта CMS уже давно является лакомым куском для злоумышленников. К сожалению, базовые настройки не обеспечивают достаточного уровня защиты, оставляя многие дефолтные дырки незакрытыми. В этой статье мы пройдем типичным путем «типового» взлома сайта на Wordpress, а также покажем как устранить выявленные уязвимости. [Читать дальше →][2]

[1]: https://habrastorage.org/files/81e/202/972/81e2029727c941c29dacf5ee6d1cba02.jpg
[2]: http://habrahabr.ru/post/259843/#habracut

[>] Умный квест в реальности: демоны и проводки
habra.14
habrabot(difrex,1) — All
2015-06-09 18:30:02


Многие слышали про [квесты в реальности][1] — перенесенные в наш мир игры жанра [escape the room][2]. Решаешь головоломки, получаешь ответы, проходишь на следующий этап. Закончить нужно за час, в итоге открывается дверь на выход. Но немногие знают, как они устроены внутри. В этой статье мы заглянем за кулисы одного из таких квестов, а также сравним его с другими в техническом плане. Как разработчик эскейп-румов, я видел реализации некоторых из них. Обычно квест делится на никак не связанные блоки, которые вместе реализуют возможность прохождения. Тем не менее, для нашего квеста мы использовали централизованную архитектуру. Постараюсь рассказать, какие плюсы и минусы этих подходов, а также опишу, какие задачи решает «техник», создающий квесты в реальности, т.к. эта тема не очень хорошо раскрыта в Интернете. ![][3] [Читать дальше →][4]

[1]: https://ru.wikipedia.org/wiki/%D0%AD%D1%81%D0%BA%D0%B5%D0%B9%D0%BF-%D1%80%D1%83%D0%BC
[2]: https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%85%D0%BE%D0%B4_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BC%D0%BD%D0%B0%D1%82%D1%8B
[3]: https://habrastorage.org/files/280/5c2/bad/2805c2badad14a41b59bd8dfd69799b7.png
[4]: http://habrahabr.ru/post/258585/#habracut

[>] Видео докладов с Golang Moscow
habra.14
habrabot(difrex,1) — All
2015-06-09 19:00:02


Готовы видео докладов с митапа [Golang Moscow][1] и мы с радостью с вами ими делимся. **1\. «Go в Badoo»** Антон [einstein\_man][2] Поваров











[Читать дальше →][3]

[1]: http://www.meetup.com/Golang-Moscow/events/221706352/
[2]: http://habrahabr.ru/users/einstein_man/
[3]: http://habrahabr.ru/post/259929/#habracut

[>] (Не)безопасный frontend
habra.14
habrabot(difrex,1) — All
2015-06-09 21:30:02




#

Не так давно я выступал на конференции [FrontendConf 2015][1] (РИТ++) с темой данной статьи. И при подготовке доклада начал искать информацию, а кто вообще выступал на данную тему и что есть в Сети на данный момент. Оказалось, что информации совсем немного, более-менее можно было бы отметить доклад [mikewest.org/2013/09/frontend-security-frontendconf-2013][2] от Mike West из компании Google, но какой-то «непентестерский» взгляд и уж совсем мало материала. И [www.slideshare.net/eoftedal/web-application-security-in-front-end][3] где тема раскрыта более детально, но выступление 2011 года. А за 4 года технологии и атаки на месте не стояли. Долго и сложно выбирая темы, что же все-таки рассказать разработчикам фронтендов про безопасность, при этом минимум касаясь бекэнда (местами все-таки это неделимо), получился доклад, а здесь — его текстовый пересказ.

#

А действительно, о чем тут вообще можно разговаривать? Говоря про взломы и безопасность невольно приходят в голову тезисы — слили базу, получили доступ к выполнению команд ОС на сервере, прочитали чужую переписку. Но это все — server side код. А что ж может «нагородить» фронтэндер? Главная опасность, конечно же, в обходе атакующим SOP — Same Origin Policy, главной политики безопасности браузеров, которая регулирует работу в разных Origin. Но не только, давайте разбираться. [Читать дальше →][4]

[1]: http://frontendconf.ru/2015/abstracts/1769
[2]: https://mikewest.org/2013/09/frontend-security-frontendconf-2013
[3]: http://www.slideshare.net/eoftedal/web-application-security-in-front-end
[4]: http://habrahabr.ru/post/259389/#habracut

[>] Ruby и C. Часть 4. Дружим акселерометр, гироскоп и дальномер с Raphael.js
habra.14
habrabot(difrex,1) — All
2015-06-09 21:30:02


В предыдущих частях от [iv\_s][1] ([раз][2] [два][3] [три][4]) были описаны различные техники использования C и Ruby вместе. Я бы хотел рассказать о еще одной возможной связке – использовании уже существующих системных C-функций. Я потихоньку улучшаю своего [робота-рисовача][5]. Он написан на Ruby, поэтому при подключении к нему акселерометра с гироскопом, мне, само собой, захотелось продолжить использовать эту технологию. Как оказалось, достучаться до функций работы с шиной I2C в Ruby предельно просто – он позволяет использовать уже написанные и установленные библиотеки на C.




Схема работы такая: на RaspberryPi запущен Sinatra сервер, который при обращении отдает данные о повороте платы по осям X и Y, а также расстояние до ближайшего препятствия в сантиметрах. На клиенте для визуализации и отладки написан простой скрипт с использованием [Raphael3d.js][6], который каждые 100мс опрашивает устройство и поворачивает схематическую плату в соответствии с положением платы физической. [Читать дальше →][7]

[1]: http://habrahabr.ru/users/iv_s/
[2]: http://habrahabr.ru/post/48928/
[3]: http://habrahabr.ru/post/49202/
[4]: http://habrahabr.ru/post/50039/
[5]: http://www.partisanink.com/versions/2.5
[6]: http://mech.fsv.cvut.cz/~stransky/en/software/raphael3d/
[7]: http://habrahabr.ru/post/259675/#habracut

[>] Кто взломал электрическую подстанцию: разбор конкурса Digital Substation Takeover
habra.14
habrabot(difrex,1) — All
2015-06-10 02:00:02


[![][1]][2] В рамках конкурса [Digital Substation Takeover][3], представленного [iGRIDS][4], у посетителей PHDays была возможность попробовать свои силы во взломе настоящей электрической подстанции, построенной по стандарту IEC 61850. Два дня участники пытались провести успешную атаку и получить контроль над системой управления электрооборудованием. [Читать дальше →][5]

[1]: https://habrastorage.org/files/f6c/f09/fe8/f6cf09fe85c54f15976fe509ed3fe479.jpg
[2]: http://habrahabr.ru/company/pt/blog/259905/
[3]: http://www.phdays.ru/program/contests/#40924
[4]: http://igrids.ru/
[5]: http://habrahabr.ru/post/259905/#habracut

[>] Свой шаблон отклика-письма на HeadHunter (и moikrug) без Copy-Paste
habra.14
habrabot(difrex,1) — All
2015-06-10 11:30:03


Многим хорош сервис поиска вакансий **hh.ru**, но ищущий всегда найдёт, что усовершенствовать. К примеру, на сервисе есть поле для заполнения письма — ответа на вакансию, но нет элементарного шаблона оформления письма — заголовок, кратко о себе, ответы на требования по вакансии. Если нет — надо сделать. Ведь специалист по JS не будет многократно заниматься Copy-Paste-операциями, когда знает, что их можно автоматизировать, даже не обременяя просьбами службы сайта. Есть такие инструменты, как пользовательские скрипты. Вначале, конечно, пришлось покопировать, пока не выявились закономерности и не получился [юзерскрипт **hhFiller**][1]. Шаблон отклика, на мой взгляд, должен содержать: 1. Заголовок-приветствие. После него пойдёт сразу рукописный текст, живой ответ на вакансию в 2-3 или более строчек. [Читать дальше →][2]

[1]: https://greasyfork.org/ru/scripts/10338-hhfiller
[2]: http://habrahabr.ru/post/259881/#habracut

[>] [Перевод] Мой топ-100 книг по Программированию, Компьютерам и Науке: часть 2
habra.14
habrabot(difrex,1) — All
2015-06-10 15:30:02


Добро пожаловать на вторую часть моих топ-100 книг о программировании, компьютера и науке. Если Вы ещё не видели [первую часть][1], прошу Вас ознакомиться с ней. В этой части я сделаю микс моих любимых книг по теории и практике, ведь, как говорит Дональд Кнут в своих [Избранных статьях по информатике][2], — «Лучшая теория основана на практике; Лучшая практика основана на теории». ![image][3] В моём представлении теория и практика должны быть разделены в соотношении 20/80. Я люблю добиваться выполнения практических задач, но в то же время мне нравится изучать теорию, на основе которой я их решаю. Мои наиболее творческие идеи всегда приходят ко мне из теоретических книг. Прочитав достаточно книг по теории, внезапно много идей выстраиваются во что-то новое. Некоторые читатели спрашивали, почему я рассказываю только про пять книг за раз. Очень просто — написать одну статью в блог о 100 книга могло бы занять у меня несколько недель усилий. Разделяя их на маленькие части, это намного проще выполнить. К тому же, приятно ощущать прогресс по мере увеличения номера публикации. Если вас заинтересовала серия, вы можете подписаться на [RSS-рассылку][4] моего блога и подписаться на обновления в моём [твиттере][5]. [![image][6]][7] Итак, приступим к книгам этой недели! [Читать дальше →][8]

[1]: http://habrahabr.ru/post/259317/
[2]: http://www.amazon.com/Selected-Computer-Science-Language-Information/dp/1881526917?tag=catonmat-20
[3]: https://habrastorage.org/getpro/habr/post_images/805/985/bac/805985bac50d3378702b92756f5d8dcd.jpg
[4]: http://www.catonmat.net/feed
[5]: http://twitter.com/pkrumins
[6]: https://habrastorage.org/getpro/habr/post_images/46e/3d7/3c7/46e3d73c72345caa19eeb27e795aef51.jpg
[7]: http://habrahabr.ru/post/259985/
[8]: http://habrahabr.ru/post/259985/#habracut

[>] [Перевод] Сравниваем Nim и Rust
habra.14
habrabot(difrex,1) — All
2015-06-10 17:00:03


_Предлагаю читателям «Хабрахабра» перевод статьи [«A Quick Comparison of Nim vs. Rust»][1]. Мои замечания будут выделены курсивом._ [Rust][2] и [Nim][3] — два новых языка программирования за развитием которых я слежу. Вскоре, после моего [первого поста][4] о Rust, вышел в свет [Nim 0.10.2][5]. Это побудило меня поближе познакомиться с Nim и, естественно, сравнить его с Rust. В этом посте я собираюсь показать вам две простых программы написанных на Nim и Rust с грубым сравнением их времени выполнения и высказать мои субъективные впечатления от программирования на этих языках. [Читать дальше →][6]

[1]: http://arthurtw.github.io/2015/01/12/quick-comparison-nim-vs-rust.html
[2]: http://www.rust-lang.org/
[3]: http://nim-lang.org/
[4]: http://arthurtw.github.io/2014/12/21/rust-anti-sloppy-programming-language.html
[5]: http://nim-lang.org/news.html#Z2014-12-29-version-0-10-2-released
[6]: http://habrahabr.ru/post/259993/#habracut

[>] [recovery mode] Общие советы при решении вопроса контроля местоположения, разрешений доступа и использования конфиденциальной информации в организации
habra.14
habrabot(difrex,1) — All
2015-06-10 17:00:03


В современных корпоративных реалиях большое количество важной для организации информации храниться в виде так называемых неструктурированных или полуструктурированных данных в виде отдельных файлов и папок на файловых хранилищах, коллекциях сайтов SharePoint, архивов электронной почты на серверах Exchange и т.д. Объем роста таких данных составляет, в среднем, около 30-50% в год. Причем такими темпами происходит не только количественный рост объемов потребляемых для хранений байт (зачастую с приставкой Гига- или все чаще и чаще Тера-), но и качественное увеличение важных или даже жизненном необходимых для компании данных, «размазанных» по одному или нескольким (иногда 20-30) файловым серверам с разными операционными системами, идеологиями хранения и обработки информации (Exchange, SharePoint, Windows, SAN/NAS). [Читать дальше →][1]

[1]: http://habrahabr.ru/post/259889/#habracut

[>] Защита персональных данных -aaS
habra.14
habrabot(difrex,1) — All
2015-06-10 17:00:03


Все организации в Российской Федерации так или иначе обрабатывают персональные данные, а следовательно попадают под действие ФЗ №152. На текущий момент бОльшая часть из них вообще ничего не делала на тему защиты персональных данных. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/259891/#habracut

[>] Типовая схема биллинга
habra.14
habrabot(difrex,1) — All
2015-06-10 17:00:03


Я как человек измученный различными АСР и сам принимавший участие в разработке АСР регулярно сталкивался с отсутствием какой-то типовой схемы, которую можно было бы посмотреть для оценки АСР, а так же перед созданием своей АСР. В сети есть некоторое количество работ по этой теме к примеру я в свое время при написании диплома изучал вот этот вот труд [Методы моделирования и разработки биллинговых систем][1]. Диплом же и есть диплом и тащить из него схемы странное занятие, так-как реалиям он не отвечает. [Читать дальше →][2]

[1]: http://tekhnosfera.com/metody-modelirovaniya-i-razrabotki-billingovyh-sistem
[2]: http://habrahabr.ru/post/259921/#habracut

[>] Vim по полной: Уровень проекта и файловая система
habra.14
habrabot(difrex,1) — All
2015-06-10 17:00:03




# Оглавление



1. [Введение][1] (vim\_lib)
2. [Менеджер плагинов без фатальных недостатков][2] (vim\_lib, vim\_plugmanager)
3. **Уровень проекта и файловая система** (vim\_prj, nerdtree)
4. Snippets и шаблоны файлов (UltiSnips, vim\_template)
5. Компиляция и выполнение чего угодно (vim\_start)
6. Работа с Git (vim\_git)
7. Деплой (vim\_deploy)
8. Тестирование с помощью xUnit (vim\_unittest)
9. Библиотека, на которой все держится (vim\_lib)
10. Другие полезные плагины

Проекты, это то, чего очень не хватает редактору Vim. Реализация проекта позволяет не только выделить его как отдельную сущность среди других папок и файлов в ФС, но и реализовать такие свистелки, как:

* Автоматическое сохранение и восстановление последней сессии проекта так, что после повторного открытия, мы получим редактируемый в прошлый раз файл(ы), с теми же настройками и положением
* Хранение информации о проекте, такой как автор проекта, лицензия, версия и так далее. Все эти данные можно будет добавлять в шаблоны и сниппеты
* Корневой каталог проекта строго определен. Это упростит использования других инструментов, на пример xUnit, дебагеры, генераторы документации и т.д.
* Отдельный, принадлежащий только проекту каталог _.vim_ и файл _.vimrc_, аналогичный пользовательским версиям. Теперь настройки и плагины проекта будут хранится в нем

[shut up and take my money][3]

[1]: http://habrahabr.ru/post/259701/
[2]: http://habrahabr.ru/post/259725/
[3]: http://habrahabr.ru/post/259995/#habracut

[>] Юнит-тесты, BDD и сила текучих утверждений (fluent assertions) в 1С
habra.14
habrabot(difrex,1) — All
2015-06-10 19:00:02




#### Немного истории

Благодаря классному дядьке Кенту Беку (Kent Beck) родилась замечательная методология test-driven development. Не смотря на необычность подхода, переворачивающего привычный процесс написания кода с ног на голову (тест на функционал создается до реализации), сейчас уже можно сказать, что разработка через тестирование стала стандартом де-факто. Практически в любых вакансиях фигурирует требование к знанию и опыту использования методики TDD и соответствующих инструментов. Почему, казалось бы, ломающая привычную парадигму мышления методология прижилась и стандартизировалась? Потому что “Жизнь слишком коротка для ручного тестирования”, а писать авто-тесты на существующий код иногда просто не возможно, ведь код, написанный в обычной парадигме, как правило совершенно тесто-не-пригодный. Стоит отметить, что за время своего существования методология успела обзавестись ответвлением (fork) в виде BDD. Дэн Норт (Dan North) в своей статье ([Introducing BDD][1]) указал на сложности внедрения TDD среди разработчиков и для решения обозначенных проблем предложил практику, которая называется behaviour-driven development. Основной фишкой BDD можно назвать микс из TDD и DDD, которая в начале выражалась в правильном именовании тестовых методов (названия тестовых методов должны быть предложениями). Апогеем BDD, на текущий момент, можно считать рождение языка Gherkin и инструментария, который его использует (Cucumber, RSpec и т.п.). [Читать дальше →][2]

[1]: http://dannorth.net/introducing-bdd/
[2]: http://habrahabr.ru/post/260013/#habracut

[>] [Перевод] Автоматизированное создание диаграмм в xkcd-стиле: из серьёзного в забавное
habra.14
habrabot(difrex,1) — All
2015-06-10 19:30:04






_Перевод поста Виталия Каурова "[Automating xkcd Diagrams: Transforming Serious to Funny][1]". Скачать файл, содержащий текст статьи, интерактивные модели и весь код, приведенный в статье, можно [здесь][2]. Выражаю огромную благодарность [Кириллу Гузенко][3] за помощь в переводе._

----

Утром в понедельник я наткнулся на интересный вопрос, опубликованный в [_Mathematica_ Stack Exchange][4], с нехитрым заголовком — "[создание графиков в xkcd-стиле][5]". Из-за [популярности][6] веб-[комиксов xkcd][7] Рэндалла Манро (Randall Munroe), я ожидал, что люди добавят себе несколько закладок этой страницы и с десяток up-vote. Тогда я ещё не знал, как всё обернётся. Сложно предсказать вирусность какого-то мема, однако если удалось создать такой, то весьма здорово наблюдать, как растёт его популярность и как он распространяется в интернете. Через два дня этот пост имел уже более 100 тысяч просмотров, двести up-vote и 150 закладок; стали возникать ответы и схожие посты в других разделах Stack Exchange, в Twitter разразился небольшой ураган по этому поводу, появлялись обсуждения в _Hacker News_ и _reddit_. Тут я приведу оригинал поста [Amatya][8] с примером изображения в xkcd-стиле: «Я получил электронное письмо, на которое я захотел ответить с графиком в xkcd-стиле, но я не мог справиться с этим. Всё, что я рисовал, выглядело как надо, однако я не мог придумать такой команды для Plot Legends, чтобы сделать фрагменты текста плавающими. Может, есть какие-то идеи, как можно было бы создать графики в xkcd-стиле? Когда всё выглядит рисованным от руки и неточным. Думаю, рисование таких странных кривых в _Mathematica_ должно быть трудным в реализации.» [][9]



[Читать дальше →][10]

[1]: http://blog.wolfram.com/2012/10/05/automating-xkcd-diagrams-transforming-serious-to-funny/
[2]: http://blog.wolfram.com/data/uploads/2012/10/Wolfram_xkcd.cdf
[3]: http://vk.com/ld742
[4]: http://mathematica.stackexchange.com/
[5]: http://mathematica.stackexchange.com/questions/11350/xkcd-style-graphs
[6]: http://www.wolframalpha.com/input/?i=xkcd.com+visitors
[7]: http://www.xkcd.com/
[8]: http://mathematica.stackexchange.com/users/2039/amatya
[9]: http://xkcd.com/1064/
[10]: http://habrahabr.ru/post/260017/#habracut

[>] Готовимся к собеседованию по PHP: псевдотип «callable»
habra.14
habrabot(difrex,1) — All
2015-06-10 20:00:02


Не секрет, что на собеседованиях любят задавать каверзные вопросы. Не всегда адекватные, не всегда имеющие отношение к реальности, но факт остается фактом — задают. Конечно, вопрос вопросу рознь, и иногда вопрос, на первый взгляд кажущийся вам дурацким, на самом деле направлен на проверку того, насколько хорошо вы знаете язык, на котором пишете. ![image][1] Вторая часть серии статей посвящена одному из самых сложных и объемных вопросов о современном PHP — что такое «callable»? Я постарался свести в один текст некий минимум знаний об этом вопросе. [Подробный разбор неочевидных мест мануала - под катом][2]

[1]: https://habrastorage.org/files/d83/5da/237/d835da237d3846eb9c41ea3e0ea29e40.jpg
[2]: http://habrahabr.ru/post/259991/#habracut

[>] Детектор блокировок UI в WPF c нотификацией
habra.14
habrabot(difrex,1) — All
2015-06-10 22:00:02


![][1] Приветствую! Думаю что каждому из программистов попадалось приложение которое по тем или иным причинам блокировало UI. Причин у таких блокировок может быть множество, такие как: синхронные запросы к сервисам, выполнение долгих операций в UI треде и прочее. В самом лучшем случае участки кода приводящие к блокировкам UI должны быть переписаны / исправлены, но это не всегда возможно по разным причинам и соответственно хочется получить некую серебряную пулю, которая сможет решить проблему с минимальной стоимостью. О одной такой пуле и пойдет речь. Подробности под катом. [Читать дальше →][2]

[1]: https://habrastorage.org/files/794/6c3/b44/7946c3b443b741e3b79c75b04a4339f2.png
[2]: http://habrahabr.ru/post/260029/#habracut

[>] Соединяй и властвуй. Нестандартный взгляд на keep-alive
habra.14
habrabot(difrex,1) — All
2015-06-11 12:00:02


![][1] Большинство современных серверов поддерживает соединения keep-alive. Если на страницах много медиаконтента, то такое соединение поможет существенно ускорить их загрузку. Но мы попробуем использовать keep-alive для куда менее очевидных задач. [Читать дальше →][2]

[1]: https://habrastorage.org/files/d41/331/52d/d4133152dbca4e528969995d3e2fa1c1.png
[2]: http://habrahabr.ru/post/259845/#habracut

[>] [Перевод] Вычисление числа Пи с помощью Intel Threading Building Blocks
habra.14
habrabot(difrex,1) — All
2015-06-11 15:30:02


Многие Android-устройства используют процессоры с несколькими вычислительными ядрами, поэтому в отрасли разработки мобильных приложений всё более важным становится умение создавать многопоточные программы. Компания Intel предлагает ценный инструментарий для разработки «параллельных» приложений – он называется **Intel Threading Building Blocks** (Intel TBB). По существу, Intel TBB представляет собой кросс-платформенную библиотеку шаблонов для создания параллельных программ. Она позволяет создавать и синхронизировать потоки данных, оставляя за кадром детали архитектуры и позволяя вам работать на высоком уровне абстрагирования. Intel TBB поддерживает все архитектуры. Что касается ОС Android, то следует использовать версию 4.3 и выше.



[Читать дальше →][1]

[1]: http://habrahabr.ru/post/260083/#habracut

[>] Пишем SSL туннель на python
habra.14
habrabot(difrex,1) — All
2015-06-11 15:30:02


Возникла задача: есть приложение под Windows, которое делает HTTPS-запросы к серверу и получает ответы. После обновления сервера приложение перестало работать. Выяснилось, что на сервере изменилась версия SSL (перешли с SSLv3 на TLSv1), а наше приложение умеет работать только по SSLv3. Приложение никто не поддерживает уже давно и менять, перекомпилировать, тестировать не хотелось. Решено было сделать прослойку между приложением и сервером, которая будет транслировать SSLv3 в TLSv1 и наоборот. Я поискал какой-нибудь прокси в интернете, но сходу не нашел (плохо искал). Решил сделать прокси на питоне. Я не профессионал в питоне, но мне показалось что для этой задачи он хорошо подходит, и интересно параллельно по изучать питон на примере реальной задачи. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/260085/#habracut

[>] Операции как объекты
habra.14
habrabot(difrex,1) — All
2015-06-12 07:00:02


Не так давно мне пришлось обращаться к хранилищу ZooKeeper из кода на C++. Приличной С++-обёртки для сишной библиотеки `libzookeeper` не нашлось, поэтому её пришлось написать самому. В процессе реализации я существенно видоизменил подход авторов java-библиотеки к построению API и теперь хочу поделиться с вами причинами и результатами принятых решений. Несмотря на ключевые слова С++ и ZooKeeper, подход, описанный в статье, подходит для организации доступа к любым хранилищам, и вполне реализуем на языках, отличных от С++. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/259307/#habracut

[>] Управление и уборка в D
habra.14
habrabot(difrex,1) — All
2015-06-12 14:30:03


Доброго времени суток, хабр! Все мы знаем, что в D используется сборщик мусора. Он же управляет выделением памяти. Его используют реализации таких встроенных типов как ассоциативные и динамические массивы, строки (что тоже массивы), исключения, делегаты. Так же его использование втроенно в синтаксис языка (конкатенация, оператор new). GC снимает с программиста ответственность и нагрузку, позволяет писать более компактный, понятный и безопасный код. И это, пожалуй, самые важные плюсы сборщика мусора. Стоит ли от этого отказываться? Расплатой за использование сборщика будут избыточное расходование памяти, что недопустимо при сильно ограниченных ресурсах и паузы всех потоков (stop-the-world) на как таковую сборку. Если эти пункты для Вас критичны добро пожаловать под кат. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/260151/#habracut

[>] Забота о репутации: проверяем свои сайты на попадание в блеклисты
habra.14
habrabot(difrex,1) — All
2015-06-12 17:30:02


Эффективность сайта в немалой степени зависит от его репутации. Избавить пользователя от спама – одна из важнейших задач в сети для добросовестного бизнеса. Для борьбы со спамом формируются списки хостов-спамеров, которые помещаются в блеклисты, формируя DNSBL. [ХостТрекер][1] предлагает функционал, который, помимо обычной проверки доступности сайта, проверяет домен на попадание в DNSBL. ![][2] [Читать дальше →][3]

[1]: http://www.host-tracker.com?yclid=dnsbl
[2]: https://habrastorage.org/files/c12/070/b99/c12070b99d3d432aa4f8d56d644b5bbb.png
[3]: http://habrahabr.ru/post/260021/#habracut

[>] Сравнение Security Enhanced NGINX и Hiawatha Web Server при отражении атак 7 уровня (BOTS/SQL/XSS etc.)
habra.14
habrabot(difrex,1) — All
2015-06-12 19:00:02


Добрый день. В завершение «недели NGINX», мы решили рассказать об очень интересной сборке «безопасной» версии NGINX китайской компании [Neusoft][1], о которой не было замечено ни одной статьи на Хабре, а именно — [SeNginx][2]. В дополнение к этому, мы также расскажем вам о втором веб сервере, которому не уделяется так много внимания, как Nginx — [Hiawatha Web Server][3], и постараемся сравнить Hiawatha с SeNginx в плане использования их для обеспечения безопасности вашего сайта или web приложения. ![image][4] ![image][5] Отметим, что за 5 лет существования нашей хостинговой компании ([WooServers][6]) нам довелось повидать целый спектр атак различных уровней и типов на сайты и web приложения наших клиентов, а также поработать с London Metropolitan Police в поиске и поимке одного управляющего ботнетом. Сегодня DDoS атаки стали настолько частыми, что только за вчерашний день Arbor® в одном из наших датацентров зафиксировал [49 DDoS атак 3/4 уровней][7] мощностью до 20-25 Gbit/s ([график 1][8] и [график 2][9]). И, хотя Arbor® девайсы и могут при определенной настройке неплохо [справляться с атаками 3 и 4 уровня][10], они практически бесполезны при атаках 7 уровня, целью которых является перегрузка ресурсов сервера, а также поиск уязвимостей в вашем приложении. Самым бюджетным вариантом отражения атак 7 уровня являются различные варианты с использованием DNS RoundRobin + HaProxy, Nginx, Varnish Cache и т.д., которые либо позволяют рассредоточить атаку между несколькими серверами клиента, либо дают возможность обработать запросы ботов «в лоб» с помощью отдачи кешированной версии страницы. Данный подход, к сожалению, часто требует ручной настройки, постоянного мониторинга и редко эффективен при меняющихся типах атак. Наглядное представление DNS RoundRobin + Nginx ([источник][11]): ![image][12] После длительных поисков нами был найден отличный модуль к NGINX, написанный русскими программистами на Perl в 2012 году и позволяющий фильтровать ботов, которые заходят на ваш сайт в автоматическом режиме — [Roboo][13] ([статья на Хабре][14]). Модуль показал себя с наилучшей стороны, позволяя фильтровать сотни тысяч запросов от ботов с помощью NGINX с минимальной нагрузкой на сервер. [Читать дальше →][15]

[1]: http://security.neusoft.com/
[2]: http://senginx.org
[3]: https://www.hiawatha-webserver.org/
[4]: https://habrastorage.org/getpro/habr/post_images/738/067/12c/73806712cbea0744ea5624271592d3c6.png
[5]: https://www.hiawatha-webserver.org/images/hiawatha_logo.png
[6]: http://wooservers.com
[7]: https://habrastorage.org/files/e9f/396/692/e9f396692bc4453a8fd58fb38c8728f6.png
[8]: https://habrastorage.org/files/6c3/37a/a4a/6c337aa4a0c74e2a8c059da49ae9ab79.png
[9]: https://habrastorage.org/files/3c7/e7e/6db/3c7e7e6dbb02437a83d0f009478d7ebe.png
[10]: http://habrahabr.ru/company/timeweb/blog/161427/
[11]: http://blog.unixy.net/2010/08/the-penultimate-guide-to-stopping-a-ddos-attack-a-new-approach/
[12]: https://habrastorage.org/getpro/habr/post_images/dc1/e4c/727/dc1e4c727aa071a7e9bde1d06edad41f.png
[13]: https://github.com/yuri-gushin/Roboo
[14]: http://habrahabr.ru/post/139931/
[15]: http://habrahabr.ru/post/260159/#habracut

[>] Как я нашел лучший в мире язык программирования. Часть Йо (2.72)
habra.14
habrabot(difrex,1) — All
2015-06-12 23:00:02


Поскольку после [второй части][1] у меня случился перерыв на работу, я поимел возможность получить некоторый фидбек, который я хоть и еще не обработал, все же заставляет меня написать внеплановую часть Йо, которая мне кажется важной для дальнейшего разговора. С тем же перерывом на работу связана задержка третьей части, прошу меня извинить тех, кто действительно ждал и пока не дождался. [Читать дальше →][2]

[1]: http://habrahabr.ru/post/259841/
[2]: http://habrahabr.ru/post/260149/#habracut

[>] Реализация Single Sign On в Symfony2 приложении
habra.14
habrabot(difrex,1) — All
2015-06-13 10:30:02




### Что такое Single Sign On?

[Single Sign On][1] — это технология, с помощью которой пользователь, будучи аутентифицированным на удостоверяющем центре _(далее Identity Provider, IdP)_, будет автоматически аутентифицирован на другом сервисе _(далее Service Provider, SP или Consumer[1-N])_ этой компании. Механизм Single Sign On используют такие сайты, как [ХабраХабр][2], [Yandex][3], [Google][4]. Приемущества такого подхода к аутентификации пользователей очевидны:

* Пользователь вводит пароль только 1 раз
* Или вовсе не вводит пароль на IdP, если там был использован вход через социальную сеть или с использованием OpenID
* Автоматически аутентифицируется на всех проектах компании
* Данные пользователя могут _плавать_ между сервисами от IdP до SP прозрачно для пользователя

[Читать дальше →][5]

[1]: https://en.wikipedia.org/wiki/Single_sign-on
[2]: https://id.tmtm.ru/login/
[3]: https://passport.yandex.ru/auth
[4]: https://accounts.google.com/ServiceLogin
[5]: http://habrahabr.ru/post/260183/#habracut

[>] Эльфийский язык программирования
habra.14
habrabot(difrex,1) — All
2015-06-13 12:00:02


Как известно, если ты серьёзный программист, синтаксический сахар тебе не нужен, это баловство. Ещё несколько лет назад Python считался детской погремушкой именно из за этого. Чем вам фигурные скобки мешали? Ребячество какое-то придумали: заменить фигурные скобки на отступы табуляции. Сказал солидный дядя. Маличики согласно покивали, виновато глядя в потолок. Через год все работали в коллективах где Питон основной язык. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/260197/#habracut

[>] В ReactOS значительно улучшили поддержку тем оформления
habra.14
habrabot(difrex,1) — All
2015-06-13 20:30:02


Вслед за [обновлением эксплорера][1], благодаря стараниям и патчам разработчиков [Ismael Ferreras Morezuelas][2] и [Jared Smudde][3], в ReactOS значительно улучшилась поддержка как собственных, так и сторонних тем оформления. Ниже скриншоты примеров, как теперь может выглядеть рабочий стол. ![image][4] [Читать дальше →][5]

[1]: http://habrahabr.ru/company/reactos/blog/251757/
[2]: https://jira.reactos.org/browse/CORE-9635
[3]: https://jira.reactos.org/browse/CORE-9770
[4]: https://scontent-fra3-1.xx.fbcdn.net/hphotos-xfa1/v/t1.0-9/1486658_1064863350209241_5378400649341077513_n.jpg?oh=379cd30b97391718ca0697de58ab6ec9&oe=55F60830
[5]: http://habrahabr.ru/post/260215/#habracut

[>] [Перевод] 9 анти-паттернов, о которых должен знать каждый программист
habra.14
habrabot(difrex,1) — All
2015-06-14 01:00:02


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

#### 1 Преждевременная оптимизация



> В 97% случаев надо забыть об эффективности малых частей программы: преждевременная оптимизация – корень всех зол. Но в 3% случаев об оптимизации забывать не нужно.
>
>
>
> Дональд Кнут



> Хотя, «никогда» чаще лучше, чем «прямо сейчас»
>
>
>
> Тим Питерс, Зен языка Python



##### Что это

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

##### Почему плохо

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

##### Как избежать

Сначала пишите чистый, читаемый, работающий код, используя известные и проверенные алгоритмы и инструменты. При необходимости используйте инструменты для профилирования для поиска узких мест. Полагайтесь на измерения, а не на догадки и предположения. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/260227/#habracut

[>] Знакомство с OsmocomBB: 0x03 Software
habra.14
habrabot(difrex,1) — All
2015-06-14 01:00:02


![][1] И снова здравствуйте! Пришло время рассказать о сборке програмного обеспечения для работы с OsmocomBB. На данном этапе у начинающих исследователей могут возникнуть трудности, поэтому постараюсь разложить все по полочкам. В этой части я расскажу о структуре проекта, принципах взаимодействия телефона и компьютера, а также подробно опишу процесс компиляции. Рекомендую вооружиться каким-нибудь дистрибутивом Linux, потому-что серверная часть проекта разрабатывалась именно под данное семейство операционных систем. Также советую воздержаться от использования виртуальных машин, так как возможны проблемы с запуском приложений на телефоне из-за временных задержек. [Читать дальше →][2]

[1]: https://habrastorage.org/files/2dd/7bc/bb3/2dd7bcbb3fe542658f10e73e0d9a59f6.jpg
[2]: http://habrahabr.ru/post/260213/#habracut

[>] Уязвимость в приложении Mail в iOS 8.3
habra.14
habrabot(difrex,1) — All
2015-06-14 10:00:02


![image][1] Уязвимость позволяет внедрить фишинговое письмо, которое на внешний вид не отличается от формы ввода логина и пароля в iCloud. Под катом пример кода, эксплуатирующий уязвимость. [Читать дальше →][2]

[1]: https://habrastorage.org/getpro/habr/post_images/047/4c0/c1a/0474c0c1a94b95c648fa4250486f1837.png
[2]: http://habrahabr.ru/post/260225/#habracut

[>] [Перевод] Семь смертных грехов разработки ПО
habra.14
habrabot(difrex,1) — All
2015-06-14 17:30:02


_Перевод статьи [Seven Deadly Sins of a Software Project][1] автора [Yegor Bugayenko][2]._ _Сопровождаемость_ — это [наиболее ценное достоинство][3] современной разработки программного обеспечения. [Сопровождаемость][4] может измеряться, в основном, рабочим временем, которое требуется новому разработчику, чтобы вникнуть в проект, до того, как он начнет вносить значимые изменения. Чем больше времени это занимает, тем меньше уровень сопровождаемости. В некоторых проектах это время близко к бесконечности, что означает, эти проекты практически не сопровождаемы. Я хочу рассказать вам о семи смертных **грехах**, которые делают программный продукт несопровождаемым. [Читать дальше →][5]

[1]: http://www.yegor256.com/2015/06/08/deadly-sins-software-project.html
[2]: http://www.yegor256.com/about-me.html
[3]: http://www.yegor256.com/2014/10/26/hacker-vs-programmer-mentality.html
[4]: https://en.wikipedia.org/wiki/Maintainability
[5]: http://habrahabr.ru/post/260241/#habracut

[>] [Перевод] Почему Go обречён на успех
habra.14
habrabot(difrex,1) — All
2015-06-14 18:00:02




> **TL;DR**
>
> Golang был разработан специально для того, чтобы расцвести в больших проектах, которые пишут большие группы программистов разных уровней, и в мире нет такой группы больше, чем open-source сообщество.

![][1] Абсолютно всё в жизни основано на компромиссах — первый закон термодинамики доказывает это, и языки программирования тут не исключение. Компромиссы в Go не уникальны, но именно благодаря их удачному сочетанию, [Go и случился][2]. Законы физики также утверждают, что каждое действие порождает противодействие, и, с ростом популярности, также возрастает количество критики в адрес языка, иногда [обоснованной][3], иногда [не очень][4]. Позвольте мне объяснить, почему я считаю, что эта критика не важна, и Go обречён на успех ни смотря ни на что. [Читать дальше →][5]

[1]: https://habrastorage.org/files/2a3/76b/383/2a376b3835354cd8b2975afe80659d02.jpg
[2]: https://www.google.com/trends/explore#q=golang
[3]: http://bravenewgeek.com/go-is-unapologetically-flawed-heres-why-we-use-it/
[4]: http://dtrace.org/blogs/wesolows/2014/12/29/golang-is-trash/
[5]: http://habrahabr.ru/post/260223/#habracut

[>] LIVR — «независимые от языка правила валидации» или валидация данных без «проблем»
habra.14
habrabot(difrex,1) — All
2015-06-14 22:30:02


Каждый программист неоднократно сталкивался с необходимостью проверки пользовательского ввода. Занимаясь веб-разработкой уже более 10 лет, я перепробовал массу библиотек, но так и не нашел той единственной, которая решала бы поставленные мною задачи. **Основные проблемы, которые встречаются в библиотеках валидации данных** **Проблема №1.** Многие валидаторы проверяют только те данные, для которых описаны правила проверки. Для меня важно, чтобы любой пользовательский ввод, который явно не разрешен, был проигнорирован. То есть, валидатор должен вырезать все данные для которых не описаны правила валидации. Это просто фундаментально требование. **Проблема №2.** Процедурное описание правил валидации. Я не хочу каждый раз думать про алгоритм валидации, я просто хочу описать декларативно, как должны выглядеть правильные данные. По сути, я хочу задать схему данных (почему не «JSON Schema» — в конце поста). **Проблема №3.** Описание правил валидации в виде кода. Казалось бы, это не так страшно, но это сразу сводит на нет все попытки сериализации правил валидации и использования одних и тех же правил валидации на бекенде и фронтенде. **Проблема №4**. Валидация останавливается на первом же поле с ошибкой. Такой подход не дает возможности подсветить сразу все ошибочные/обязательные поля в форме. **Проблема №5.** Нестандартизированные сообщения об ошибках. Например, «Field name is required». Такую ошибку я не могу показать пользователю по ряду причин:

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

То есть, нужно возвращать не сообщение об ошибках, а стандартизированные коды ошибок. **Проблема №6.** Числовые коды ошибок. Это просто неудобно в использовании. Я хочу, чтобы коды ошибок были интуитивно понятны. Согласитесь, что код ошибки «REQUIRED» понятней, чем код «27». Логика аналогична работе с классами исключений. **Проблема №7.** Нет возможности проверять иерархические структуры данных. Сегодня, во времена разных JSON API, без этого просто не обойтись. Кроме самой валидации иерархических данных, нужно предусмотреть и возврат кодов ошибок для каждого поля. **Проблема №8.** Ограниченный набор правил. Стандартных правил всегда не хватает. Валидатор должен быть расширяемый и позволять добавлять в него правила любой сложности. **Проблема №9.** Слишком широкая сфера ответственности. Валидатор не должен генерировать формы, не должен генерировать код, не должен делать ничего, кроме валидации. **Проблема №10.** Невозможность провести дополнительную обработку данных. Практически всегда, где есть валидация, есть необходимость в какой-то дополнительной (часто предварительной) обработке данных: вырезать запрещенные символы, привести в нижний регистр, удалить лишние пробелы. Особенно актуально — это удаление пробелов в начале и в конце строки. В 99% случаев они там не нужны. _Я знаю, что я до этого говорил, что валидатор не должен делать ничего кроме валидации._ 3 года назад, было решено написать валидатор, который не будет иметь всех вышеописанных проблем. Так появился LIVR (Language Independent Validation Rules). Есть реализации на Perl, PHP, JavaScript, Python (мы на python не пишем — фидбек по ней дать не могу). Валидатор используется в продакшене уже несколько лет практически в каждом проекте компании. Валидатор работает, как на сервере, так и на клиенте. [Читать дальше →][1]

[1]: http://habrahabr.ru/post/246521/#habracut

[>] Основы Rust. Глава 1 — Знакомство с Rust
habra.14
habrabot(difrex,1) — All
2015-06-15 02:00:04


![][1] Rust – это язык программирования, разработанный Mozilla и поддерживаемый большим опенсорс-сообществом. Начал его разрабатывать Graydon Hoare в 2006 году. Mozilla начала спонсировать проект в 2009 и впервые он был официально представлен в 2010 году. Работа над ним прошла через много итераций и завершилась 15 мая 2015 года, выпустив первую стабильную версию 1.0.0. Rust основан на ясных и твердых принципах. Он является системным языком программирования, и по возможностям идет вровень с C и C++. Rust такой же быстрый, как и C++, при этом более безопасный, так как запрещает использовать код, который может вызвать сбой программы из-за проблем с памятью. Кроме того, Rust имеет встроенные функциональные возможности, необходимые для параллельного выполнения на многоядерных машинах, а это делает параллельное программирование безопасным для памяти, не используя при этом сборки мусора, это единственный язык, который такое может предоставить. Rust также устраняет повреждения при совместном использование данных, через параллельный доступ, также известный, как “гонки данных”. В этой главе рассказывается об основных причинах, почему популярность Rust неуклонно растет. После, мы установим рабочую среду для разработки Rust. [Читать дальше →][2]

[1]: https://habrastorage.org/files/804/93f/f69/80493ff6904e4045a8f0e1e8c92244dd.jpg
[2]: http://habrahabr.ru/post/260147/#habracut

[>] Программисты и депрессия
habra.14
habrabot(difrex,1) — All
2015-06-15 06:00:02


    Это перевод(причем достаточно вольный) выступления 2013 года программиста на Ruby по имени Greg Bauges, посвященного депрессии и психическим расстройствам в среде программистов. Выступление старое, но проблема вечная. Вот само видео с конференции:




    Итак, начнем, меня зовут Грег. Я работаю в компании Table XI в Чикаго. Мы что-то вроде веб-студии из 30 человек. Я программировал большую часть своей жизни, начав еще с TRS-80, когда мне было только 6 или 7 лет. Там были кассеты и Basic, я даже еще помню ежемесячный журнал 3-2-1 Contact, который печатал на заднем развороте программы для BASIC. Тогда я не мог копипастить и мне оставалось только перепечатывать программу чтобы запустить, заставляя меняться цвета на экране и делать прочие непотребства… Я провел большую часть моей жизни пытаясь усидеть на двух стульях — программируя и работая с клиентами. И еще у меня [биполярное расстройство второго типа][1](БАР2) и [СДВ][2], и сегодня я хочу рассказать вам свою историю, друзья. Рассказать вам почему мы должны уделять внимание депрессии и психическим заболеваниям на подобных встречах, конференциях, и в разговорах с коллегами. [Читать дальше →][3]

[1]: http://2
[2]: http://3
[3]: http://habrahabr.ru/post/260249/#habracut

[>] [Перевод] Почему Go обречён на успех (обновлено)
habra.14
habrabot(difrex,1) — All
2015-06-15 06:30:03




> **TL;DR**
>
> Golang был разработан специально для того, чтобы расцвести в больших проектах, которые пишут большие группы программистов разных уровней, и в мире нет такой группы больше, чем open-source сообщество.

![][1] Абсолютно всё в жизни основано на компромиссах — первый закон термодинамики доказывает это, и языки программирования тут не исключение. Компромиссы в Go не уникальны, но именно благодаря их удачному сочетанию, [Go и случился][2]. Законы физики также утверждают, что каждое действие порождает противодействие, и, с ростом популярности, также возрастает количество критики в адрес языка, иногда [обоснованной][3], иногда [не очень][4]. Позвольте мне объяснить, почему я считаю, что эта критика не важна, и Go обречён на успех ни смотря ни на что. [Читать дальше →][5]

[1]: https://habrastorage.org/files/2a3/76b/383/2a376b3835354cd8b2975afe80659d02.jpg
[2]: https://www.google.com/trends/explore#q=golang
[3]: http://bravenewgeek.com/go-is-unapologetically-flawed-heres-why-we-use-it/
[4]: http://dtrace.org/blogs/wesolows/2014/12/29/golang-is-trash/
[5]: http://habrahabr.ru/post/260223/#habracut

[>] Как мы делали лучший трекер релиз-ноутов
habra.14
habrabot(difrex,1) — All
2015-06-15 11:00:03


Друзья, сегодня я хочу рассказать вам о том, как появился на свет сервис [Allmychanges.com][1]. Дело было в далеком 2013 году. Солнечным осенним днем я обдумывал идеи для реализации в рамках двухдневного хакатона Django Dash. Хотелось сделать какой-нибудь сервис для разработчиков, но не очередной континуос-интегрейшн-в-облаке, а что то более интересное и полезное.

## Проблема номер один

И вот, в результате возникла такая идея – а что если сделать сервис, которому даешь URL, а он сам находит и показывает ChangeLog проекта? Ведь какая проблема с большинством, да что там с большинством – со всеми софтверными проектами – сложно найти, что у них изменилось от версии к версии. А в release notes, порой, можно найти интересные и полезные вещи. Разработчики [Django][2], к примеру, пишут не только от том что изменилось, но и про всякие деприкешены и про то, как мигрировать с одной мажорной версии на другую. В общем, невероятно ценно иметь такое место, куда можно посмотреть и оценить возможный масштаб бедствия после апгрейда всех зависимостей. Когда такого места нет, послеобновления часто случается такое: [][3] Однако даже для проекта, мейнтейнеры которого заботливо ведут ChangeLog, найти его бывает проблематично. Почему? Да потому что фреймворки и библиотеки пишут люди, а люди все разные. Кто то записывает release notes в файлике `NEWS`, кто то в `ChangeLog`, a некоторые разбрасывают их по отдельным файликам типа `docs/src/releases/1.7.rst`. Хуже всех те, кто то вообще не ведет человеческих релиз ноутов и заставляет вас ползать по гит-логу и собирать крупицы знаний по коммит-мессаджам. [Дальше будет интересней][4]

[1]: https://allmychanges.com
[2]: https://allmychanges.com/p/python/django/
[3]: https://www.flickr.com/photos/yakin669/3521215609 "Image by Mike, on Flickr"
[4]: http://habrahabr.ru/post/260275/#habracut

[>] Примеры использования MongoDB в e-commerce (часть 2)
habra.14
habrabot(difrex,1) — All
2015-06-15 15:00:02


![][1] [ [Первая часть][2] ] В этом посте будет то, что не поместилось в первую часть. Это некоторые операторы, которые есть в `aggregation framework` и достаточно вольный перевод трех статей из раздела [экоситема][3] на сайте со справкой к `MongoDB`, описывающих некоторые случаи применения для интернет-коммерции. Случаи использования разделены там на восемь статей, которые условно можно разделить на три группы. Мне показались самыми интересными для перевода три материала, связанные с `e-commerce`.

1. [Операторы в aggregation framework][4]
2. [ Каталог продуктов][5]
3. [ Корзина и управления остатками на складе ][6]
4. [ Иерархия категорий][7]

[Читать дальше ][8]

[1]: //habrastorage.org/files/e36/58a/ca6/e3658aca69ab496895f5bc53c7357632.jpeg
[2]: http://habrahabr.ru/post/259219/
[3]: http://docs.mongodb.org/ecosystem/#use-cases
[4]: #1
[5]: #2
[6]: #3
[7]: #4
[8]: http://habrahabr.ru/post/260291/#habracut

Pages: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41