Долгое время меня глодало незнание того, как сделать некоторые элементарные вещи в дебиановских менеджерах пакетов, но, как часто бывает, спросить рядом было не у кого, а до написания куда-либо руки не доходили. И вот наконец вопросы вызрели и я написал свой вопрос в дебиановскую рассылку. Естественно оказалось что пропустил что-то очевидное, но и узнал много неочевидных полезностей, посему решил набросать шпаргалку, авось кому пригодится.
Читать полностью »
Архив за 23 августа 2012 - 2
Шпаргалка начинающего Debian/Ubuntu администратора
2012-08-23 в 15:42, admin, рубрики: aptitude, Debian, linux, Ubuntu, метки: aptitude, Debian, UbuntuВ начале июля директор (теперь уже бывший) агентства "Карамель" Наталья Прыткова написала пост о том, почему ей надоело быть гендиром SMM-компании, который собрал кучу лайков и разнообразных мнений. От "Наталья, вам лучше удалить свой пост ради своего будущего, до "Самый крутой пост ever!"
Таблицы с данными в адаптивном дизайне
2012-08-23 в 15:15, admin, рубрики: css, адаптивная вёрстка, адаптивный дизайн, веб-дизайн, Веб-разработка, метки: css, адаптивная вёрстка, адаптивный дизайн, веб-дизайн Одна из постоянных проблем верстальщиков адаптивных сайтов — это задача удобно представить обычные таблицы на мобильных устройствах. Вот как выглядят такие таблицы чаще всего:
Не очень удобно, правда? К счастью уже существует несколько хитрых способов решить такую проблему.Читать полностью »
Виды таблиц с данными в адаптивном дизайне
2012-08-23 в 15:15, admin, рубрики: css, адаптивная вёрстка, адаптивный дизайн, веб-дизайн, Веб-разработка, метки: css, адаптивная вёрстка, адаптивный дизайн, веб-дизайн Одна из постоянных проблем верстальщиков адаптивных сайтов — это задача удобно представить обычные таблицы на мобильных устройствах. Вот как выглядят такие таблицы чаще всего:
Не очень удобно, правда? К счастью уже существует несколько хитрых способов решить такую проблему.Читать полностью »
Способы реализации адаптивных таблиц
2012-08-23 в 15:15, admin, рубрики: css, адаптивная вёрстка, адаптивный дизайн, веб-дизайн, Веб-разработка, метки: css, адаптивная вёрстка, адаптивный дизайн, веб-дизайн Одна из постоянных проблем верстальщиков адаптивных сайтов — это задача удобно представить обычные таблицы на мобильных устройствах. Вот как выглядят такие таблицы чаще всего:
Не очень удобно, правда? К счастью уже существует несколько хитрых способов решить такую проблему.Читать полностью »
Заметки по окончании курса 6.002 MITx
2012-08-23 в 14:11, admin, рубрики: MIT, электроника, Электроника для начинающих, метки: MIT, электроникаС 5 марта по 10 июня мной был пройден дистанционный курс обучения Массачусетского технологического института по программе 6.002 MITx «Circuits and electronics».
Зарегистрировался из чистого интереса. Не был уверен в том, что найду время, справлюсь с английским и т.д. Но затянуло. Курс оказался настолько проработанным и интересным, что я отложил все дела и снова стал студентом.
Читать полностью »
Алгоритмы сортировки. Gnome Sort на Си
2012-08-23 в 14:08, admin, рубрики: c++, Алгоритмы, алгоритмы сортировки, Программирование, С++, Си, сортировка, метки: Алгоритмы, алгоритмы сортировки, Программирование, С++, Си, сортировка Алгоритмы сортировки. Их не много, но и не мало. Есть часто используемые, есть никому не нужные. Я решил произвести обзор этих алгоритмов, чтоб освежить и свою память, и память хабрапользователей. И начнём с редкоиспользуемого алгоритма Gnome Sort(гномья сортировка).
Читать полностью »
Защита .NET приложений в облаках
2012-08-23 в 13:47, admin, рубрики: .net, Mono, защита, информационная безопасность, обфускатор, обфускация, протектор, метки: .net, Mono, защита, обфускатор, обфускация, протектор
Пожалуй, защита ПО всегда была для меня одной из самых любимых тем. Я обожал придумывать сложные хитроумные проверки лицензионности программы, и с упоением реализовывал их. Я всегда держался принципа, что хакер, чтобы взломать защиту, должен изучить максимум технологий использующихся в программе. Пусть думает о синхронизации потоков, если ему захотелось поставить бряк в алгоритме проверки ключа. Пусть изучает вопросы подсчета COM ссылок, если он хочет вмешаться в мой алгоритм. Пусть думает о том, как представлены битовые карты изображений в памяти, если он решил разобраться, как я сохранил данные ключа.
Да, C++ был почти идеальным языком в этом плане. Но времена меняются, старые технологии уходят и на их место приходят новые более продуктивные и удобные. Так наша команда перешла на .NET. Но в обмен на простоту разработки и удобство отладки, мы в придачу получили в довесок и простоту декомпиляции нашего ПО. Теперь хакер мог не просто обойти лицензионные ограничения, но и получить почти полный исходник нашей программы просто скормив ее рефлектору.
Разумеется, в качестве решения этой проблемы на рынке было представлено множество различных обфускаторов. Но, как ни странно, большинство из них разочаровывали меня сразу с двух сторон: и ценовой политикой (даже минимальная лицензия некоторых превосходила стоимость нашего ПО в несколько раз), и «интеллектуальностью» алгоритма. Так, после некоторых обфускаторов, умудрялись падать даже простые WinForms приложения. Что же касалось WPF, то без долгого-долгого черного шаманства над эксклудами, запустить среднего размера программу не представлялось возможным в принципе.
Так сформировалось понимание проблемы и четкое желание создать свой продукт, сводящий озвученные выше проблемы к минимуму. И появился SaaS обфускатор и протектор .NET кода AppFuscator.com
Самый ценный совет по программированию, который я получил
2012-08-23 в 13:25, admin, рубрики: Программирование, совет, метки: совет«Год или два, с момента начала работы в Bell Labs, я работал в паре с Кеном Томпсоном над интерактивным графическим языком, разработанным Джерардом Хольцманом (Gerard Holzmann). Я печатал быстрее, поэтому я сидел за клавиатурой, а Кен стоял позади меня. Мы работали быстро, и когда компилятор выдавал ошибку, я рефлективно начинал закапываться в проблему, изучая стек вызовов, вывод программы, запускал отладчик и так далее. Но Кен просто стоял рядом и думал, игнорируя меня и код, который мы только что написали. Вскоре я заметил закономерность: Кен зачастую понимал, в чем проблема, раньше меня и произносил: „Я знаю, что не так“. Обычно он был прав. Я понял, что Кен выстраивал ментальную модель кода и, когда что-то ломалось, это была ошибка в модели. И думая о том, как эта проблема могла возникнуть, он выяснял, в каком месте модель была неверна или где наш код мог неправильно эту модель отразить.Читать полностью »