Search
Write a publication
Pull to refresh
68
0
Nagg @Nagg

Разработчик

Send message

Органайзер здорового образа жизни для гика: комплексный подход

Reading time6 min
Views27K
Сидячий образ жизни в режиме «9-10 часов за компьютером – полчаса на авто – два часа на диване» к здоровью и жизненному тонусу не располагает – это факт. Отрицательные последствия всем известны: плохая осанка, лишний вес, ухудшение зрения, потеря мышечной массы, половые расстройства, проблемы с пищеварением и кровообращением; и, наконец, «вишенка на торте» – низкий уровень энергии, вялость, снижение концентрации. Но опускать руки и поддаваться стереотипу, гласящему, что работающий за компьютером человек обязательно должен быть бледным, вялым и рыхлым, — последнее дело. Если взяться за дело с умом, сохранить здоровье и улучшить физическую форму вполне возможно.

Но как? Как сориентироваться в хаосе рекомендаций по здоровому образу жизни? Лично на меня наводят ужас люди, наизусть помнящие гликемический индекс и содержание витамина Е в морковке, не забывающие следить за количеством пройденных в день шагов и разбирающиеся в спортпите лучше всякого тренера. То есть стать специалистом по здоровому образу жизни в наше время, когда информация лежит на поверхности, конечно, можно, но, во-первых, на это нужно положить огромное количество времени и сил, а во-вторых, цель ведь не в том, чтобы получить «черный пояс» по ЗОЖу, а в том, чтобы просто быть в тонусе.

Цель. В комплексном виде простая цель «быть в тонусе» представляет собой несколько родственных направлений движения:
• Сохранять здоровье, не допускать серьезного ухудшения самочувствия.
• Быть в хорошей физической форме, включая внешний вид и выносливость.
• Иметь достаточно энергии на работу, хобби, личную жизнь.

И, что важно – затрачивать на все это минимум сил и драгоценного времени. Важно: когда мы говорим о минимуме сил и времени, мы не имеем в виду какой-то «обман системы» или чудодейственные методы, речь идет о рациональном подходе, планировании, эффективном тайм-менеджменте.
Читать дальше →

Представление спикеров конференции Desktop UI & Business Application. Про бэкенд

Reading time5 min
Views4.2K
Всем привет!

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

Ни для кого не секрет, что основной целью наших конференций является дать возможность людям познакомиться на почве профессиональных интересов. Доклады являются пищей для размышления и вводной частью к последующим дискуссиям различной степени детальности. На наш взгляд, такое общение способствует осознанию собственных убеждений в более глубокой мере, так как вы сталкиваетесь с другими, порой диаметрально противоположными мнениями. Так что же приготовлено для конференции Desktop UI & Business Application?



Сначала представим темы, которые относятся к бэкенду, к серверной части, которая будет интересна всем разработчикам, занятым в сфере энтерпрайз разработки. Т.е. это и WPF, и WinForm, и ASP.NET.

История представления реальных данных и процессов в мире программ имеет богатую и долгую историю. Можно сказать, что все началось с транзакционных скриптов, и процедурного программирования. Когда доменную модель пытались полностью представить в виде набора процедур и данных, которые хранятся в базе данных. По сути, все крутилось вокруг таблиц. Шагом вперед, вместе с ООП разработкой стала модель табличных данных, которые уже были представлены набором данных в памяти программы. Теперь таблицы стали отправной точкой в представлении доменной логики. Процедуры уже не объявлялись в глобальном пространстве имен, а были «пристегнуты» к определенной таблице, в зависимости от своих функций. Дальнейшее удешевление и распространение компьютеров привело к тому, что все более широкое применение находило компьютерное моделирование. В то же время сложные реальные доменные модели надо было отображать как можно более проще для поддержки и расширения. Так Мартин Фаулер предложил, а Эрик Эванс развил идею Domain Driven Design, которой большинство сейчас придерживается, в той или иной степени.
Читать дальше →

iOS-приложение от наброска до App Store

Reading time4 min
Views49K
Привет, хабр. Я работаю ведущим дизайнером в студии. Делюсь рассказом о своем первом приложении, которое я не только проектировал и оформлял, а прошел все шаги до релиза своими силами.



Осторожно: статья проиллюстрирована крупными анимированными изображениями.
Читать дальше →

Бесплатная онлайн школа Android-разработчиков

Reading time2 min
Views89K


Первый Android телефон T-Mobile G1 был представлен в октябре 2008, а сейчас уже насчитывается более 1 миллиарда активных пользователей платформы по всему миру. По статистике 1,5 миллионов Android-устройств активируется каждый день. Приложения и разработчики являются основной составляющей Android экосистемы, поэтому для нас задача обучения и помощи разработчикам является одной из самых приоритетных.

Сегодня компании e-Legion и Google совместно запускают первую онлайн школу мобильных Android–разработчиков.

Начиная с 2011 года компания-разработчик мобильных приложений e-Legion организовывала бесплатные оффлайн школы мобильных разработчиков. Первой стала iOS-школа, которая собрала больше 200 заявок и выпустила 12 студентов осенью 2011 года. Потом были школы мобильных разработчиков под Windows Phone и Android. С каждым анонсом на Хабре нас ждал вопрос о том, будет ли запись лекций и можно ли поучаствовать тем, кто живет не в Питере. Каждый раз мы отвечали что-то из серии «скоро все будет». И вот, наконец-то, это «скоро» наступило. Мы решили создать школу, в которую сможет поступить желающий из любого города и которую можно пройти дистанционно.
Хочу участвовать

Хоткеи Android Studio

Reading time2 min
Views52K
Уже год как я начал пытаться программировать под Android, и весь год меня в этом поддерживал добрый друг Android Studio. Безусловно, я продвигался бы намного быстрее, знай зеленый я о хоткеях больше, но в свое время я не нашел цельного и понятного справочника важных горячих клавиш IDE, а посему написал его сам. В нем далеко не все комбинации, лишь те, что показались полезными в работе, за исключением Ctrl+C, Ctrl+V, Ctrl+X и Ctrl+Z. Выставляю его на суд общественности и для всеобщего пользования здесь:
Читать дальше →

Как легко расшифровать TLS-трафик от браузера в Wireshark

Reading time2 min
Views167K
Многим из вас знаком Wireshark — анализатор трафика, который помогает понять работу сети, диагностировать проблемы, и вообще умеет кучу вещей.

image

Одна из проблем с тем, как работает Wireshark, заключается в невозможности легко проанализировать зашифрованный трафик, вроде TLS. Раньше вы могли указать Wireshark приватные ключи, если они у вас были, и расшифровывать трафик на лету, но это работало только в том случае, если использовался исключительно RSA. Эта функциональность сломалась из-за того, что люди начали продвигать совершенную прямую секретность (Perfect Forward Secrecy), и приватного ключа стало недостаточно, чтобы получить сессионный ключ, который используется для расшифровки данных. Вторая проблема заключается в том, что приватный ключ не должен или не может быть выгружен с клиента, сервера или HSM (Hardware Security Module), в котором находится. Из-за этого, мне приходилось прибегать к сомнительным ухищрениям с расшифровкой трафика через man-in-the-middle (например, через sslstrip).

Логгирование сессионных ключей спешит на помощь!


Что ж, друзья, сегодня я вам расскажу о способе проще! Оказалось, что Firefox и Development-версия Chrome поддерживают логгирование симметричных сессионных ключей, которые используются для зашифровки трафика, в файл. Вы можете указать этот файл в Wireshark, и (вуаля!) трафик расшифровался. Давайте-ка настроим это дело.
Читать дальше →

Секрет успеха Кремниевой долины заключается в том, что Соглашение об отказе от конкуренции не действует в Калифорнии

Reading time2 min
Views17K
Профессор школы менеджмента Sloan при MIT Мэтт Маркс вместе с коллегами объяснил почему успех Кремниевой долины в немалой степени зависит от местного законодательства. Знаменитая колыбель технологических инноваций возникла благодаря большому скоплению талантливых умов в одном месте. А оно, в свою очередь, стало возможно потому, что в Калифорнии не действует Соглашение об отказе от конкуренции.
Узнать подробности

Программное создание NinePatchDrawable

Reading time9 min
Views9.2K
В новом Android Lollipop появился такой интересный компонент как VectorDrawable. Если использовать его с умом, можно значительно снизить объем приложения, сэкономив на графических ресурсах, плюс, использование векторной графики освобождает нас от муторного процесса создания изображений под разные плотности экрана. Первая мысль, которая меня посетила, когда я увидел VectorDrawable, была: “Ух ты! А его можно тянуть как NinePatch?”. Оказалось нельзя. Тут можно было бы немного огорчиться и довольствоваться тем, что хотя бы иконки можно в векторе держать. Однако, я на этом решил не останавливаться. В итоге получилась универсальная утилита, которая из любого Drawable способна сделать NinePatchDrawable.



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

3 лучших инструмента для описания RESTful API

Reading time3 min
Views123K

Взаимодействие различных сервисов с использованием АPI, из новаторства превращается в обыденность. Количество бесплатных и платных API уже исчисляется тысячами, и с каждым днем их число активно растет. А почему бы и нет? Продажа удаленных запросов к своему новаторскому сервису может принести больше прибыли, чем распространение услуг через свою площадку. И пусть, в таком случае, уже ваши клиенты ломают голову и тратят деньги на привлечение аудитории. Используя свой опыт работы, я предлагаю краткий обзор лучших решений по реализации API на сегодняшний день.
Читать дальше →

Семинар по анатомии .Net, Roslyn, CoreCLR, CoreFX, декомпиляции, хакерству

Reading time3 min
Views6.2K


Наверняка, прочитав заголовок, вы уже поняли, что речь идет про CLRium, который уже анонсирован в Москве (03-04 апреля) и Санкт-Петербурге(29-30 мая). Но теперь его оффлайн могут посетить жители города Екатеринбурга.

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

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

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

Чем мы еще выделяемся? Ценой! Всего за 2,000 можно сходить на семинар и, возможно, получить новое хобби, которое отогреет вас, как программиста и даст не один день беспрерывного кодинга нового расширения на Студию или копания в ядре CoreCLR.

cool Полный список тем выступлений и ссылки на регистрацию — под катом
Читать дальше →

Заполнение текстовых шаблонов данными на основе модели. Реализация на .NET с использованием динамических функций в байт-коде (IL)

Reading time19 min
Views10K

Пролог


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

Сразу возник вопрос — как это реализовать? На ум приходили различные решения, начиная от задания в шаблоне неких константных значений, которые бы заменялись на данные модели, и заканчивая полноценными вьюхами Razor (сайт построен на MVC 5).

После непродолжительной битвы с самим собой, я пришел к выводу, что эту достаточно распространенную задачу пора решить раз и навсегда, и что ее решение должно быть не очень сложным (т.е. не должно зависеть от библиотек, не входящих в состав .NET Framework 4), но при этом достаточно функциональным, чтобы решать поставленную задачу и иметь запас по расширяемости.

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

Если вас интересует только шаблонизатор, ссылочки ниже:

Исходные коды шаблонизатора (Genesis.Patternizer) и тестовой консоли в проекте на SourceForge: https://sourceforge.net/projects/open-genesis/?source=navbar
Или в архиве одним файлом: Patternizer.zip

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

Context Model Pattern via Aero Framework

Reading time26 min
Views9.8K
Context Model Pattern — концепция проектирования приложений, сочетающая черты архитектурных паттернов MVVM, MVP, MVC и основанная на наборе достаточно свободных, прогрессивных, отлично согласованных между собой положений. Краеугольными камнями являются представления, медиаторы, контекстные объекты и их коллекции, а основополагающая рекомендация — принцип прямых инжекций.

Aero Framework — открытая библиотека на языке C#, содержащая всю необходимую инфраструктуру для создания xaml-ориентированных приложений, соответствующих рассматриваемому паттерну. При её грамотном использовании исходный код получается беспрецедентно лаконичным, высокопроизводительным и интуитивно понятным даже начинающим разработчикам.

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

Внимательный и терпеливый читатель будет щедро вознаграждён знаниям.

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

Поговорим про отличия Mono от MS.NET

Reading time9 min
Views77K


С каждым днём кроссплатформенная разработка под .NET становится всё более реальной. А после недавнего анонса официальной поддержки Linux/MacOS счастливое будущее стало ещё немножечко ближе. Вышеприведённая картинка утратила свою былую актуальность, ведь исходники теперь будут под MIT. Впрочем, писать кроссплатформенные .NET-приложения можно достаточно давно — в этом нам помогает Mono. Но вот отношение к нему в сообществе довольно неоднозначное. Мне зачастую приходится слышать изречения вроде «Mono тупит, под него всё в три раза медленнее работает» или «Под Mono вообще нормально ничего не запускается». Причём очень редко доводится слышать от этих людей конкретные факты. Вопросы «А что конкретно тупит?» или «А что конкретно не работает?» повергают их в ступор. Не всех (некоторые способны на конструктивную дискуссию), но большинство. Чаще всего начинаются возмущённые ответы в духе «Да вообще ничего не работает! А если и работает, то очень медленно!». В конце беседы создаётся впечатление, что каждая конечная машинная команда под Mono работает в несколько раз медленнее, а в половине исходников стоят throw new Exception().

В этом посте мне хотелось бы немножко поделиться опытом. Не так давно мы портировали наш продукт PassportVision (анонс на Хабре) под Linux. Могу заявить, что работает он вполне нормально. Да, чутка медленнее, чем под Windows на классическом .NET от Microsoft (далее — MS.NET). Но работает вполне стабильно, а падение производительности не принципиальное. При этом продукт у нас достаточно большой и вполне попадает под категорию enterprise, а возможности C#/.NET мы используем на полную катушку. Так что завести большое серверное приложение под .NET реально — было бы желание. Также мне довелось беседовать с разными разработчиками, которые пишут что-то под Mono — истории в большинстве своём успешные.

Но почему же тогда встречается столько негатива в сторону Mono? Я считаю, что проблема в том, что люди не особо хотят разбираться в разнице между рантаймами. Запустили разок какое-нибудь .NET-приложение под Linux на Mono 2.4, а оно с ходу не запустилось — всё, Mono целиком плохой, не будем его использовать. А в итоге виноват оказывается один-единственный метод, у которого реализация немного отличается от MS.NET. Новые версии Mono выходят раз в пару месяцев, реализацию уже давно поправили, но люди всё равно продолжают ходить и хаять бедный Mono, не желая разбираться в деталях.

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

Что каждый программист должен знать про оптимизации компилятора

Reading time17 min
Views81K
Высокоуровневые языки программирования содержат в себе много абстрактных программистских конструкций, таких как функции, условные операторы и циклы — они делают нас удивительно продуктивными. Однако одним из недостатков написания кода на высокоуровневом языке является потенциальное значительное снижение скорости работы программы. Поэтому компиляторы стараются автоматически оптимизировать код и увеличить скорость работы. В наши дни логика оптимизации стала очень сложной: компиляторы преобразуют циклы, условные выражения и рекурсивные функции; удаляют целые блоки кода. Они оптимизируют код под процессорную архитектуру, чтобы сделать его действительно быстрым и компактным. И это очень здорово, ведь лучше фокусироваться на написании читабельного кода, чем заниматься ручными оптимизациями, которые будет сложно понимать и поддерживать. Кроме того, ручные оптимизации могут помешать компилятору выполнить дополнительные и более эффективные автоматические оптимизации. Вместо того чтобы писать оптимизации руками, лучше бы сосредоточиться на дизайне архитектуры и на эффективных алгоритмах, включая параллелизм и использование особенностей библиотек.

Данная статья посвящена оптимизациям компилятора Visual C++. Я собираюсь обсудить наиболее важные техники оптимизаций и решения, которые приходится применить компилятору, чтобы правильно их применить. Моя цель не в том, чтобы рассказать вам как вручную оптимизировать код, а в том, чтобы показать, почему стоит доверять компилятору оптимизировать ваш код самостоятельно.
Читать дальше →

Как устроен наш код. Серверная архитектура одного проекта

Reading time22 min
Views30K
Картинка для привлечения вниманияТак сложилось, что к тридцати годам я менял работу лишь единожды и не имел возможности на собственном опыте изучить, как в различных компаниях устроены веб-проекты, расчитанные на высокую скорость отклика и большое количество пользователей. <irony> Так что, дорогой хабраюзер, попавший в поле моего зрения в оффлайне, увидев меня, лучше беги, пока я не начал докучать тебе вопросами на тему обработки ошибок, логирования и процесса обновления на рабочих серверах&lt/irony&gt. Мне интересен не столько набор используемых технологий, сколько принципы, на которых построена кодовая база. Как код разбит на классы, как классы распределены по слоям, как бизнес-логика взаимодействует с инфраструктурой, каковы критерии по которым оценивается качество кода и как организован процесс разработки нового функционала. К сожалению, подобную информацию найти непросто, в лучшем случае всё ограничивается перечислением технологий и кратким описанием разработанных велосипедов, а хочется, конечно, более детализированной картинки. В этом топике я попытаюсь как можно более подробно описать, как устроен код в компании, где работаю я. Этот подход — мой суммарный опыт полученный за 10 лет разработки в разных компаниях.
Читать дальше →

Почему реляционные СУБД отлично подходят для стартапов: Пример из истории разработки мессенджера Kato

Reading time6 min
Views26K
image

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

Соответственно, технологический прогресс шел не только по направлениям увеличения мощности процессоров, объемов памяти или уменьшения размеров устройств, но и в области улучшения эффективности работы с данными. В результате появилось большое количество различных систем управления базами данных (СУБД).

В нашем продукте, мессенджере для корпоративных коммуникаций Kato, используется СУБД PostgreSQL. Сегодня мы хотели бы напомнить историю возникновения этого прекрасного инструмента и показать преимущества его использования для стартапов в области информационных технологий.
Читать дальше →

Встреча .Net сообщества на CLRium #2. Как устроен и работает CLR, Roslyn, RyuJIT, CoreFx

Reading time4 min
Views8.6K
Я не люблю заезженное слово «конференция». Это — встреча разработчиков с общими интересами, которые хотят послушать о трюках, которые позволяют обходить правила, установленные в.Net Framework, которым интересна тема использования меняющих и создающих языки, тулов. А также, что можно получить если знаешь как компилировать и декомпилировать приложение. Об этом не говорят. Потому что разговор на эту тему слишком долгий чтобы уместить в формат одного часа стандартного выступления на конференциях. Я пробовал выступать на .NEXT, и помимо положительных отзывов были «галопом по Европам». Согласен, за час не уложиться. Добро пожаловать в полный формат!

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

Теперь у нас целых два дня. Причем вы можете купить билет как на один, так и на оба дня. Первый день — как в прошлый раз: много хардкора, не практичного, но очень интересного… Позволяющего еще лучше понять как все работает и как этим можно воспользоваться… Тем со временем еще немного накидаю. Много мяса на любителя. И второй — практика. Второй длиннее первого. На час =). Во второй день будет очень много Roslyn, JetBrains Nitra (он же N2, он же Nemerle2)? RyuJIT, .Net Framework open sourced. Вот честно, я бы сам сходил

Почитать и зарегистрироваться



cool Примеры статей и полный список тем выступлений — под катом
Читать дальше →

Auto Layout с переменным набором элементов

Reading time3 min
Views11K
В Xcode 5 компания Apple представила новую систему построения интерфейсов приложений для iOS (6+) и MAC OS X (v10.7 +) “Auto Layout” (AL) призванную заменить устаревшую “Springs & Struts” (S&S). Основываясь на задании правил (Constraints) определяющих размер и положение интерфейсных элементов, AL предоставляет значительно более широкие возможности чем S&S. Тем не менее, слабой стороной AL (помимо большей сложности) является работа с переменными наборами элементов. Сама по себе система AL вообще не поддерживает опциональные элементы, но есть способы обойти это ограничение.
Читать дальше →

Windows Ad Mediator – усовершенствованный способ монетизации приложений на Windows Phone

Reading time4 min
Views7.8K
Новая эра монетизации приложений на Windows Phone наступила с выходом расширения Ad Mediator, особенностью которого является агрегирование и управление несколькими SDK рекламных сетей.

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


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

Карьера разработчика в Финляндии: большое интервью с Михаилом Самариным

Reading time30 min
Views27K
Я познакомился с Михаилом Самариным около месяца назад, когда он заинтересовался моей деятельностью по организации конференций. Михаил уже 15 лет живёт в Хельсинки и занимает должность одного из бизнес-директоров в компании Futurice, крупном финском аутсорсере. Среди прочего, Михаил — дважды спикер JavaOne (2011, 2012) и дважды Microsoft MVP (2013, 2014).



В связи с известными событиями, вокруг все чаще слышно одно и то же: «пора валить». Сам я нынче далёк от этой мысли как никогда (у меня сейчас много проектов, и все связаны с Россией, да и Европу с Штатами я не шибко люблю), не заметить эмигрантские настроения трудно. Особенно в среде программистов.

Ситуация такова, что Futurice (по-фински читается «ФутурИс», а по-английски «ФьючурАйc») с каждым днём всё сложнее искать хороших разработчиков в Финляндии, стране с населением в 5 миллионов человек. В связи с этим компания решила начать искать толковых инженеров в России и релоцировать их в Хельсинки. И в частности, делать это на российских программерских конференциях, например, на .NEXT.

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

Information

Rating
4,436-th
Registered
Activity