Как стать автором
Обновить
0
LMG @lmg199116read⁠-⁠only

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

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

Проверочное состояние в Java

Время на прочтение2 мин
Количество просмотров23K
Ключевое слово assert (проверка) появилось в Java 1.4. Мне кажется, многие до сих пор стараются его избегать, или заворачивать в утилитные статические методы с возможностью быстро поменять assert condition : message; на
if (!condition)
    throw new AssertionError(message);

по всему коду. Кто-то боится, что проверки недостаточно надежные, и если кто-то забудет их включить, какие-то баги останутся незамеченными. Кто-то, наоборот, маниакально думает о производительности: если кто-то включит проверки для подсистемы/библиотеки, написанной ребятами из первой группы, и забудет исключить пакеты или классы «производительной» библиотеки, исполнение будет замедленно бесполезными вычислениями.

Хотя, по-моему, ничего страшного в проверках нет, их можно и нужно расставлять по коду как можно щедрее. Во-первых, как я уже упомянул (но для кого-то это может оказаться в новинку), проверки можно гибко настраивать (включать/отключать в пакетах и отдельных классах) как из командной строки при запуске JVM, так и программно (через ClassLoader), так что если вы вдруг захотите включить проверки в одной системе и выключить — в другой, это уж точно решаемая проблема.

Во-вторых, иногда хочется проверять не тривиальные условия вроде какая-то булева переменная == false или true, а поддерживать некоторое проверочное состояние внутри класса и сверяться с ним в методах. С помощью трюка с assert можно добиться этого практически бесплатно при исполнении с отключенными проверками.
Читать дальше →
Всего голосов 24: ↑16 и ↓8+8
Комментарии44

Попытка подружиться с STM32

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


В прошлый раз я издевался над микроконтроллерами ATtiny 85, сопрягая бедные восьминогие чипы с Arduino IDE. А потом мне захотелось посмотреть, что же за чудо такое — STM32, поклонники которых смотрят на программистов AVR (не говоря уж об ардуинщиках) с некоторым неодобрением. В процессе беглого гугления выяснилось, что STM32 «для идиотов» существует — есть проект Leaf Maple, в рамках которого — две платы на STM32F103 и среда разработки, являющая собой клон Arduino IDE.

Решающим фактором стала стоимость. Китайская версия Leaf Maple Mini продается за 4$ — это немногим дороже Arduino Nano. Заказав три штуки, я принялся ждать.

Пожалуй, со ставкой на Maple я немного поторопился — проект скорее мертв, чем жив. IDE не развивается, драйверов без бубна под Windows 8 нет, библиотеки в зачаточном состоянии, полное уныние и запустение. Ради интереса я поморгал светодиодом, запустив Maple IDE под OS X (заработало из коробки), а затем стал думать, с какой стороны подходить к плате для дальнейшего изучения.

Неведома зверушка
Всего голосов 33: ↑22 и ↓11+11
Комментарии25

Zsh: fucky new year

Время на прочтение8 мин
Количество просмотров19K
Прочитал пост habrahabr.ru/post/247161 и подумал: вот человек написал непонятную программу на bash, которая выводит «Happy new year». Но это ведь bash! Надо показать, что zsh не хуже, а даже намного лучше! И так, программа на zsh, выводящая «С новым годом!» (по‐русски!) со следующими ограничениями:
  1. Программа не должна использовать никакие сторонние программы. Ни base64, ни cat, ничего.
  2. Программа должна выводить текст по‐русски.
  3. Программа быть написана на ASCII, но не должна содержать ни одной буквы или цифры.
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии15

Философия программирования — трёхнаправленное программирование

Время на прочтение11 мин
Количество просмотров104K
Программирование рассматривается как процесс создания компьютерных программ. Слово процесс в этом определении не лишнее. Обычно рассуждают в духе «посмотрите, какую замечательную структуру данных можно описать на данном языке программирования». Философия программирования подразумевает оглянуться по сторонам, да и в глубь копнуть.

Собственно разделение на кодирование, и создание алгоритмов это уже специфика, сначала идёт жизнь, то есть человек опирается на некую мысль вроде «напишу-ка я фреймворк с такими-то свойствами». И вот это начальное направление это вопрос философии. Проблема в том, что часто жена программиста лучше его самого знает, на философском уровне, что он делает и почему. Элементарные философские категории: мышление, сознание, обусловленность программисту неведомы. И это странно, если сравнить способность программиста мыслить, например, читая статьи по функциональному программированию или алгоритмам поиска, вперемешку со статьями видных русских или европейских философов, окажется, что собственно навык мышления у программистов развит не меньше, а то и больше. Вот только язык программиста очень богат пока он рассуждает о паттерн-матчинге и жалок и органичен когда ему надо выйти из своей песочницы, оторваться от IDE и файлового менеджера.
Читать дальше →
Всего голосов 76: ↑57 и ↓19+38
Комментарии87

Генератор своими руками на 220 вольт. Теперь отключения света не страшны

Время на прочтение2 мин
Количество просмотров545K
Я покажу как собрать простой, но достаточно мощный, генератор на 220 вольт.



Потребуется:


— коллекторный мотор, можно другой на 12 вольт
— насадка на ось мотора — патрон от дрели
— бесперебойник UPS или инвертор с 12 на 220
— диод на 10 ампер: Д214, Д242, Д215, Д232, КД203 и т. д.
— провода
— велосипед
— и желательно аккумулятор на 12 вольт

Сборка:


— закрепляем велосипед так, что бы заднее колесо крутилось свободно, вывешиваем его
— прикручиваем патрон на ось мотора
— крепим мотор так, что бы патрон плотно прижимался к колесу, можно подтянуть его пружиной
— подключаем мотор к аккумулятору: минусовой провод мотора к минусу аккумулятора, плюсовой провод мотора к аноду диода, катод диода к плюсу аккумулятора
— аккумулятор соединяем с бесперебойником или с инвертором
Всё! К бесперебойнику можно подключать потребители на 220 вольт и пользоваться электричеством! Как только аккумулятор разрядится, достаточно будет покрутить педали и примерно через час аккумулятор зарядится.
Читать дальше →
Всего голосов 270: ↑262 и ↓8+254
Комментарии181

Microsoft CloudOS Network — что это?

Время на прочтение7 мин
Количество просмотров9.8K
Привет,

Давайте поговорим немного сегодня об IaaS, гибридной истории, сервис-провайдерах, хостинге и Microsoft. В новом году мы будем уделять этой интересной теме больше внимания, и начинаем мы с того, что расскажем, что есть у нас и что такое CloudOS и почему сеть COSN (в которой находятся такие представительные компании, как Softline и Parking.ru) – это важно.
Все посты из серии «Гибридная история» помечены соответствующим тегом hybridstory.



Читать дальше →
Всего голосов 17: ↑11 и ↓6+5
Комментарии15

Pillow 2.7 — Существенное улучшение качества и производительности

Время на прочтение6 мин
Количество просмотров42K
Первого января 2015 года по расписанию вышла новая версия библиотеки для работы с изображениями Pillow 2.7. Так как многие изменения в ней были сделаны командой Uploadcare, мы рады представить вам расширенную версию заметок о релизе этой версии.

Для начала вспомним, с чего все началось. Pillow — дружественный форк (как называют его авторы) популярной библиотеки PIL, Python Imaging Library. Последняя версия PIL 1.1.7 вышла в 2009 году и в основном содержала исправления ошибок. Изначально Pillow задумывался как проект только по приведению в порядок сборки PIL, и разработчики рекомендовали отправлять все баги, не связанные со сборкой, в оригинальный PIL. Но время шло, PIL стремительно устаревала, багов не уменьшалось, тут еще Python 3 маячил на горизонте. Поэтому с версией Pillow 2.0 все изменилось. «Pillow 2.0.0 добавляет поддержку Python 3 и включает много багфиксов со всего интернета» гласит описание проекта на PyPI. И с тех пор понеслось. Каждые три месяца выходили версии с огромным количеством багфиксов и другими улучшениями от различных разработчиков. Самым значительным нововведением за это время было, пожалуй, поддержка форматов WebP и JPEG2000. Теперь пришло время следующего большого шага.
Читать дальше →
Всего голосов 55: ↑55 и ↓0+55
Комментарии2

Тренды JavaScript на 2015 год

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


Всем привет! Мы как-то задумали сделать легкий вводный курс на тему JavaScript и разработки приложений (он, кстати, скоро будет опубликован): и, пока я собирал материалы к нему, как-то само собой выяснилось, что есть довольно много вещей, которые, так сказать, находятся на переднем крае развития JavaScript. Отсюда родилась идея сделать отдельную обзорную статью в жанре «X трендов на год Y по технологии Z».

Многие из тех, вещей, которые я буду описывать, можно попробовать в той или иной степени уже сегодня (собственно, иначе я бы говорил о космическом будущем, а не о трендах). В этом есть несомненный плюс: если у вас будет свободное время (а на праздниках его обычно много), вам будет чем заняться. Да и, в целом, хорошо начинать новый год с расширения своих горизонтов!
Читать дальше →
Всего голосов 108: ↑88 и ↓20+68
Комментарии76

Как скрэшить любое приложение на айфоне, и как этого не допустить

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

Однажды мы, в Surfingbird, нашли странную ошибку, из-за которой приложение стабильно крэшилось. Позже оказалось, что почти любое приложение можно довольно просто скрэшить (даже приложения, написанные самой Apple). О том, что же это за ошибка и как её обойти, мы расскажем в статье.
Читать дальше →
Всего голосов 62: ↑51 и ↓11+40
Комментарии28

Как отключить обновления в Skype и рекламу заодно

Время на прочтение1 мин
Количество просмотров200K
Относительно недавно skype обновился, довольно радикально изменив интерфейс. И я как закоренелый консерватор стал искать способ, как оставить при себе свои старые привычки, заодно нашел как избавиться от рекламы.

Инструкция:
1. Запретить Скайпу исходящие подключения на порты 80 и 443.
2. Создать файл %TMP%\SkypeSetup.exe и запретить себе всё на этот файл.
Читать дальше →
Всего голосов 34: ↑19 и ↓15+4
Комментарии39

Архитектура мобильного клиент-серверного приложения

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

К добавлению внешнего сервера рано или поздно приходит любой сложный проект. Причины, при этом, бывают совершенно различные. Одни, загружают дополнительные сведения из сети, другие, синхронизируют данные между клиентскими устройствами, третьи- переносят логику выполнения приложения на сторону сервера. Как правило, к последним относятся большинство «деловых» приложений. По мере отхода от парадигмы «песочницы», в которой все действия выполняются только в рамках исходной системы, логика выполнения процессов переплетается, сплетается, завязывается узлами настолько, что становится трудно понять, что является исходной точкой входа в процесс приложения. В этом момент, на первое место выходит уже не функциональные свойства самого приложения, а его архитектура, и, как следствие, возможности к масштабированию.
Заложенный фундамент позволяет либо создать величественный архитектурный ансамбль, либо «накурнож» — избушку на куриных ножках, которая рассыпается от одного толчка «доброго молодца» коих, за время своего существования повидала видимо — невидимо, потому что, глядя на множественные строительные дефекты заказчик склонен менять не исходный проект, а команду строителей.
Планирование — ключ к успеху проекта, но, именно на него выделяется заказчиком минимальный объем времени. Строительные паттерны — туз в рукаве разработчика, который покрывает неблагоприятные комбинации где время — оказывается решающим фактором. Взятые за основу работающие решения позволяют сделать быстрый старт, чтоб перейти к задачам, кажущиеся заказчику наиболее актуальными (как-то покраска дымоходной трубы, на еще не возведенной крыше).
В этой статье я постараюсь изложить принцип построение масштабируемой системы для мобильных устройств, покрывающей 90-95% клиент-серверных приложений, и обеспечивающей максимальное отдаление от сакраментального «накурножа».
Читать дальше →
Всего голосов 20: ↑11 и ↓9+2
Комментарии7

Учебник AngularJS: Всеобъемлющее руководство, часть 1

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

Содержание


1 Введение в AngularJS
2 Engineering concepts in JavaScript frameworks
3 Modules
4 Understanding $scope
5 Controllers
6 Services and Factories
7 Templating with the Angular core
8 Directives (Core)
9 Directives (Custom)
10 Filters (Core)
11 Filters (Custom)
12 Dynamic routing with $routeProvider
13 Form Validation
14 Server communication with $http and $resource

1 Введение в AngularJS


Angular – MVW-фреймворк для разработки качественных клиентских веб-приложений на JavaScript. Он создан и поддерживается в Google и предлагает взглянуть на будущее веба, на то, какие новые возможности и стандарты он готовит для нас.

MVW означает Model-View-Whatever (модель – вид – что угодно), то есть гибкость в выборе шаблонов проектирования при разработке приложений. Мы можем выбрать модели MVC (Model-View-Controller) или MVVM (Model-View-ViewModel).

Этот обучающий материал задумывался как отправная точка для изучения AngularJS, его концепций и API, чтобы помочь вам создавать великолепные веб-приложения современным способом.
Читать дальше →
Всего голосов 44: ↑38 и ↓6+32
Комментарии29

6 уроков Flappy Bird для предпринимателей

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


Еще несколько месяцев назад, открывая социальную сеть или сайт, вы неизбежно сталкивались с упоминаниями о «Flappy Bird». То, что начиналось, как очередной независимый проект одного-единственного разработчика из Вьетнама, стало глобальной сенсацией, вызвавшей невероятное количество слухов, дискуссий и загадок, а также суматоху, отчужденность и безмерный гнев.

Хотел ли создатель игры Донг Нгуен (Dong Nguyen) намеренно вызвать что-то из вышеперечисленного? Ни в малейшей степени. После того, как буря улеглась, он впервые нарушил свое молчание с тех пор, как удалил игру из магазинов приложений для iOS и Android, сказав, что он сделал это ради блага самих же игроков, т.к. боялся, что игра вызывает слишком сильную зависимость. Гипотетически, это совсем даже неплохо для разработчика игр.

Но немного вникнув, я подумал, что бесценные уроки из этого могут извлечь не только независимые разработчики игр, надеющиеся создать еще одну Flappy Bird, но и начинающие, а также уже действующие предприниматели любой сферы деятельности. Так что давайте почтим память ныне покойной птички, запомнив все то, чему она нас научила, и подумав, как мы можем нести это наследие дальше, применяя некоторые из ее уроков на практике.
Читать дальше →
Всего голосов 35: ↑25 и ↓10+15
Комментарии11

Как я получил медаль за код

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

В 2005 мой отряд Нацгвардии отправили в Ирак в рамках операции «Освобождение Ирака». Моей армейской специальностью была 92А, что означает специалист по логистике и запасам. Мои задачи состояла в том, чтобы заказывать запчасти для механиков, забирать их, возвращать старые, разбираться с опасными материалами, отправлять и принимать транспортные средства и обслуживать лицензии. И много чего ещё. В общем, в то время вся система крутилась на ULLS-G (Unit Level Logistics System – Ground, система логистики уровня отряда – наземная), которую потом уже сменила SAMS-E (Standard Army Maintenance System – Enhanced, расширенная стандартная система обслуживания армии), которая – так получилось – использовала в качестве бэкенда Oracle. По сравнению с SAMS-E, система ULLS-G выглядела как динозавр. Я много её использовал за 4 года, проведённые на службе. И это было ужасно. ULLS-G работала под MS-DOS (угу), и большинство компьютеров, которые я использовал, работали под MS-DOS (это был 2000 год). Когда мы прибыли на место дислокации, большинство компьютеров уже работали под WinXP/2K, поэтому можно было запускать ULLS-G в режиме совместимости с MS-DOS.
Читать дальше →
Всего голосов 104: ↑66 и ↓38+28
Комментарии18

Как разработчики сидели в Петербурге и тихо ели грибы, а потом написали ОС для систем хранения данных

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


В конце 2008 года на тогда ещё небольшую петербуржскую компанию вышел один западный медиахолдинг примерно так:
— Это вы там упоролись по хардкору и приспособили SSE-инструкции для реализации кода Рида-Соломона?
— Да, только мы не…
— Да мне пофиг. Хотите заказ?

Проблема была в том, что видеомонтаж требовал адовой производительности, и тогда использовались RAID-5 массивы. Чем больше дисков в RAID-5 — тем выше была вероятность отказа прямо во время монтажа (для 12 дисков — 6%, а для 36 дисков — уже 17-18%). Дроп диска при монтаже недопустим: даже если диск падает в хайэндовой СХД, скорость резко деградирует. Медиахолдигу надоело с криком биться головой о стену каждый раз, и поэтому кто-то посоветовал им сумрачного русского гения.

Много позже, когда наши соотечественники подросли, возникла вторая интересная задача — Silent Data Corruption. Это такой тип ошибок хранения, когда на блине одновременно меняется и бит в основных данных, и контрольный бит. Если речь о видео или фотографии — в целом, никто даже не заметит. А если речь про медицинские данные, то это становится диагностической проблемой. Так появился специальный продукт под этот рынок.

Ниже — история того, что они делали, немного математики и результат — ОС для highload-СХД. Серьёзно, первая русская ОС, доведённая до ума и выпущенная. Хоть и для СХД.
Читать дальше →
Всего голосов 209: ↑200 и ↓9+191
Комментарии53

О медленном программировании

Время на прочтение5 мин
Количество просмотров84K
От переводчика: при разработке Web-payment.ru, сайта с мониторингом обменников и множеством разделов о платежных системах, я на интуитивном уровне использовал принципы, описанные в этой статье. Подсознательно я их знал, но не мог сформулировать. Предлагаю вам ознакомиться с интересным подходом, которым поделился опытный программист, автор многих книг Jeffrey Ventrella.
Мой папа часто говорил мне: «Помедленнее, сынок, ты делаешь дело слишком быстро».

Мне довелось поработать во многих высокотехнологичных стартапах в заливе Сан-Франциско. Сейчас мне 52 и я программирую медленно и внимательно. Меня можно считать кем-то вроде дизайнера, пищущего код. Читая пост дальше, вы и сами это поймете.

Недавно, я работал над проектом вместе с группой молодых кодеров, которые верят в эффективность очень быстрых, малых итеративных изменений в коде. Программировать медленно бок о бок с ними для меня было проблемой. Нам рекомендовали работать в одной общей базе кода, это как если бы мы вместе варили один большой котел супа, и при условии, что мы активно непрерывно мешали бы его, из него непременно появилось бы что-то чудесное и завершенное.
Читать дальше →
Всего голосов 103: ↑89 и ↓14+75
Комментарии57

Тостер. Близкие теги, страница первой подписки на теги

Время на прочтение2 мин
Количество просмотров6K
Мы ввели на «Тостере» понятие «близких тегов». Для любого заданного тега мы научились определять те теги, которые ему «близки», а именно чаще других тегов встречаются в одних и тех же вопросах наряду с заданным. Это можно использовать для самых разных задач, пока же мы применили эту технологию вот для чего.

20 близких тегов


У каждого тега появился подраздел, в котором выводится 20 близких тегов. Попасть в этот подраздел можно из контекстного блока «Близкие теги», который выводится в правой колонке на всех подразделах тега. Этот подраздел призван улучшить качество и точность подписки на темы, которые интересуют каждого конкретного участника нашего сообщества. Пользуясь вдобавок дополнительным инструментом «Усиленной подписки», можно отслеживать вопросы по самым узким и специальным темам, не боясь ничего пропустить.


Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии10

Однокласникис.инфо

Время на прочтение1 мин
Количество просмотров5.6K
Получил сегодня вот такое письмо:


Разумеется, не читая, ткнул. Потому что от одноклассников вечно такие письма приходят. А оказалось — не от одноклассников. Правда, тут же перекидывает на настоящий сайт, но чертовски меня напрягло. Что скажете?

Whois гласит:

Domain ID:D23412612-LRMS
Domain Name:ODNOKLASSNIKIS.INFO
Created On:19-Jan-2008 22:30:49 UTC
Last Updated On:02-Jun-2008 11:20:45 UTC
Expiration Date:19-Jan-2009 22:30:49 UTC
Sponsoring Registrar:Regtime Ltd. (R455-LRMS)
Status:OK
Registrant Name:Vladimir Enikeev
Registrant Organization:OOO Odnoklassniki RU
Registrant Street1:Tsvetnoy bulvar dom7
Registrant City:Moscow
Registrant State/Province:NO
Registrant Postal Code:127000
Registrant Country:RU
Registrant Phone:+7.4957444700
Registrant Email:odnoklassnikis@mail.ru
Tech Email:odnoklassnikis@mail.ru
Name Server:NS2.ODNOKLASSNIKIS.INFO
Name Server:NS1.ODNOKLASSNIKIS.INFO

Липа, короче. Что она делает, кто-нибудь может сказать?
Всего голосов 70: ↑44 и ↓26+18
Комментарии68

Тостер. Вклад пользователя в теги: вводим систему репутации

Время на прочтение2 мин
Количество просмотров7.3K
На Тостере мы строим сообщество экспертов в самых разных областях IT индустрии. Со временем ни у кого не должно остаться сомнений, куда обращаться за компетентным ответом на возникший перед тобой вопрос, если поиски в интернете не увенчались успехом. Каждый будет знать, что на Тостере он всегда найдёт того специалиста, который лучше всех разбирается в данной области и который обязательно поможет.

Чтобы выявлять экспертов в той или другой области, нужна система репутации. И сегодня мы рады показать наши первые шаги по созданию такой системы на Тостере. Мы вводим понятие «Вклад в тег». Чем больший вклад в данный конкретный тег ты внёс, тем большим экпертом в этой области мы тебя считаем.


Читать дальше →
Всего голосов 49: ↑35 и ↓14+21
Комментарии64

Летнее обновление на «Фрилансим»

Время на прочтение2 мин
Количество просмотров15K
Всем привет! Как вы знаете, в январе «Фрилансим» перешёл на платную подписку. Анонсируя изменения, мы пообещали расширять возможности для пользователей. Сказано – сделано: первым «расширением» стал новый сервис – «Услуги».


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

Информация

В рейтинге
Не участвует
Откуда
Кутаиси, Грузия, Грузия
Дата рождения
Зарегистрирован
Активность