Pull to refresh
0
0

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

Send message

Визуальная криптография для цветных изображений

Reading time4 min
Views13K
Недавно наткнулся на хабре на пару постов о сокрытии данных в BMP-файлах (один и два) и решил поделиться своим опытом в этой области. В этот раз будем прятать цветную картинку, а в качестве контейнеров будем использовать еще три изображения.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments10

Вирусная стеганография

Reading time5 min
Views3.7K
Для начала — пара вводных замечаний. Замечание первое: в связи с заштопанной правой рукой печатать мне неудобно, посему опечатки могут быть. Замечание второе: для кого-то все ниженаписанное может не быть в новинку, но что уж поделать! Зато остальным, надеюсь, будет интересно. Поехали!

Многие пользователи считают файрволлы и фильтры траффика надежной защитой от вирусов. В общем, настроить эти средства можно так, чтобы существенно усложнить жизнь вирусам, но это будет довольно непростой проблемой. О паре моментов, с которыми придется столкнуться я и расскажу. Под катом, как всегда, много технических подробностей, кода и местами бессвязных мыслей.
Читать дальше →
Total votes 54: ↑52 and ↓2+50
Comments56

Можно так просто взять и скрыть информацию

Reading time9 min
Views82K
Каждый из читателей наверняка много раз видел фильмы, где супергерой / суперзлодей передавал зашифрованную информацию. Мы привыкли к слову «шифр», «шифрование» и любая тайная передача информации сейчас ассоциируетсяименно с этими словами. Хотя на самом деле, это далеко не так. Безопасная передача информации далеко не ограничивается криптографией (шифрования), а есть еще много методов и средств для этого.
Читать дальше →
Total votes 124: ↑93 and ↓31+62
Comments111

Создание нестандартного компонента с нуля. Часть 2

Reading time10 min
Views21K

Вступление



Вновь приветствую, коллеги.

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



В этой статье под катом мы продолжим накручивать свистелки и... дополнительные возможности нашей клавиатуре. На повестке дня:

  1. Сохранение состояния компонента при повороте экрана
  2. добавление подсветки при оверскролле
  3. передача параметров в XML
  4. Мультитач зуммирование
Читать дальше →
Total votes 53: ↑51 and ↓2+49
Comments9

Android NDK: OpenSL ES

Reading time9 min
Views24K
Здравствуйте, уважемые хабражители!
Недавно, читая хабр, я увидел статью об Android NDK и OpenAL. А в комментариях был задан вопрос о OpenSL ES. Тогда у меня и родилась мысль написать статью об этой библиотеке. Я занимался этой темой, когда мне понадобилось добавить звуки и музыку в игру под Android, написанную на C++, под NDK. Статья не претендует на полноту, здесь будут лишь основы.

Содержание:
  1. Краткое описание структур OpenSL ES
  2. Инициализация механизма библиотеки и создание объекта для работы с динамиками
  3. Проигрывание PCM(wav)
  4. Проигрывание MP3, OGG
  5. Заключение

Читать дальше →
Total votes 26: ↑22 and ↓4+18
Comments15

StringBuilder прошлое и настоящее

Reading time13 min
Views63K

Вступление


Моя прошлая статья была посвящена особенностям строкового типа данных String в .NET. Эта статья продолжает традицию, однако на этот раз мы рассмотрим класс StringBuilder.

Как известно, строки в .NET являются неизменяемыми (не используя unsafe), а поэтому проводить с ними операцию конкатенации в больших количествах не самая лучшая идея. Это значит, что следующий код имеет весьма серьезные проблемы с нагрузкой на память:

string s = string.Empty;
for (int i = 0; i < 100; i++)
 {
    s += "T";
 }
Читать дальше →
Total votes 78: ↑67 and ↓11+56
Comments32

Декомпиляция Java приложений

Reading time3 min
Views202K
Декомпиляция — процесс воссоздания исходного кода декомпилятором
Недавно я задался вопросом: Какой декомпилятор лучше?
Начал мучить Google, экспериментировать. В итоге нашел отличное решение. Как декомпильнуть любую программу и получить рабочие «исходники»? Об этом в сабже.
Читать дальше →
Total votes 56: ↑51 and ↓5+46
Comments37

Изучение иностранных языков: живые учителя или интернет?

Reading time4 min
Views74K


— Феденька, ты очень интеллигентный мальчик, ты мне очень нравишься, но Я БУДУ СТАВИТЬ ДВА В ГОДУ!!! — визжала моя школьная учительница по французскому и делала примерно такое лицо.

Моя школьная учительница по английскому языку делала другое лицо:
Читать дальше →
Total votes 282: ↑232 and ↓50+182
Comments366

10 лучших инструментов для разработки и администрирования MySQL

Reading time6 min
Views725K
Многие компании создают различные многофункциональные приложения для облегчения управления, разработки и администрирования баз данных.

Большинство реляционных баз данных, за исключением MS Access, состоят из двух отдельных компонентов: «back-end», где хранятся данные и «front-end» — пользовательский интерфейс для взаимодействия с данными. Этот тип конструкции достаточно умный, так как он распараллеливает двухуровневую модель программирования, которая отделяет слой данных от пользовательского интерфейса и позволяет сконцентрировать рынок ПО непосредственно на улучшении своих продуктов. Эта модель открывает двери для третьих сторон, которые создают свои приложения для взаимодействия с различными базами данных.

В Интернете каждый может найти много продуктов для разработки и администрирования баз данных MySQL. Мы решили собрать 10 самых популярных инструментов в одной статье, чтобы вы смогли сэкономить свое время.
Читать дальше →
Total votes 64: ↑61 and ↓3+58
Comments67

Минифест (манифест разработчиков-минималистов)

Reading time6 min
Views50K
От переводчика

На днях в сети появился минисайт minifesto.org со здравой, на мой взгляд, тезисной выжимкой опыта подхода к стартапам (да и к разработке в целом). Манифестность текста смягчается от начала к концу, но это не делает его хуже.

Снова прошу прощения за отсутствие перевода словосочетания “computer science”.


Кратко


  • Боритесь за закон Парето, следите за тем, чтобы 20% вашего труда давало вам 80% результата;
  • Расставляйте приоритеты, ведь минимализм нужен для того, чтобы делать то, что нужно, а не распыляться по мелочам;
  • Лучшее — враг хорошего: сначала просто сделайте, потом сделайте правильно, потом сделайте лучше;
  • Убивайте в зародыше, не бойтесь начать всё сначала. Чем быстрее ошибётесь, тем быстрее научитесь;
  • Повышайте свою ценность. Постоянно думайте о том, чем можно помочь команде, — и развивайтесь в этом направлении;
  • Сперва основы. Мыслите последовательно, ориентируясь на лучшие практики мира Computer Science;
  • Посмотрите с разных сторон. Простое получается тяжелее, чем сложное, поэтому включайте воображение;
  • Синтаксис — основа взаимодействия. Мы пишем код для людей, а не для машин;
  • Не запутывайте. Старайтесь проектировать слоями, по мере возможности не зависящими друг от друга;
  • Вычищайте оставленное-на-всякий-случай. Минимализм борется с отвлекающим от основного.

Читать дальше
Total votes 131: ↑120 and ↓11+109
Comments39

Создание нестандартного компонента с нуля. Часть 1

Reading time11 min
Views39K

Вступление


Приветствую, коллеги!

Достаточно часто при разработке мультимедийных Андроид-приложений (далее просто “приложений”) мы сталкиваемся с задачей создания собственных компонентов, не предусмотренных в системе. Это могут быть всяческие ручки-переключатели, визуализаторы спектра и т. п. Некоторые из них могут быть получены простой заменой графического ресурса, поворотом канвы на 90 градусов и т. п. Но, иногда, все же приходится делать что-то свое “с нуля”.
В этой статье я собираюсь рассказать о создании компонента — простой клавиатуры фортепиано, при помощи наследования от класса View и реализации всех внутренностей “самостоятельно”. Почему в кавычках — увидите дальше.

В серии статей я постараюсь осветить такие вопросы, как:

  1. отрисовка компонента
  2. добавление скроллинга с использованием стандартных скроллбаров
  3. взаимодействие, использование селекторов для клавиш
  4. Сохранение состояния компонента при повороте экрана
  5. добавление подсветки при оверскролле
  6. передача параметры в XML
  7. pinch zoom


Первая статья будет о первых трёх пунктах.

Если Вам интересны эти темы, добро пожаловать под кат.
Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments5

Как учить английский язык

Reading time6 min
Views134K
Данный текст был написан моей женой для собственного блога. Мне он показался достаточно интересным и полезным для людей, интересующихся изучением иностранных языков, и я решил опубликовать его здесь, учитывая, что на Хабре таких людей очень много. Почему моя жена решила, что может давать какие-либо советы в этой области? Потому что она окончила иняз, свободно говорит на английском, продолжительное время вела курсы изучения английского языка с разными группами и благодарные ученики не раз положительно отзывались о ней, как о преподавателе, а сейчас она успешно изучает итальянский и уже использует его в своей работе.



Итак, кто заинтересовался — прошу под кат.
Читать дальше →
Total votes 106: ↑77 and ↓29+48
Comments58

Основы Android NDK на примере работы с OpenAL

Reading time8 min
Views37K
День добрый, уважаемые Хабраюзеры!

С недавних пор занимаюсь разработкой приложений под Android, в частности разработкой игр. Так сложилось, что для одного проекта пришлось работать с Android ndk. Все трудности и нюансы работы с native рассмотреть в принципе невозможно в рамках одной статьи, решил в данной статье небольшое введение в ndk написать.
А чтобы статья была интересна не только новичкам, покажу как работать с OpenAL и форматами WAV, OGG.

Работа с Android NDK
Total votes 46: ↑45 and ↓1+44
Comments13

65 статистик из мира мобильных игр, чтобы впечатлить друзей

Reading time4 min
Views61K
Мы любим игры для мобилок, а ещё очень ценим цифры. Но когда мы ищем в вебе статистику о трендах в разработке мобильных игр, мы быстро понимаем, что в общем-то нет единого места, где бы всё это добро было собрано. Так что вот оно, куча статистики индустрии мобильных игр, которая сделает вас очень популярным на следующей игровой конференции, или коктейльной вечеринке, когда вас спросит какой-нибудь скептик…

“Неужели люди действительно тратят так много времени на видео-игры?” Да, мы действительно тратим.

(прим. переводчика: автор частенько повторяется, простим ему это)


(Примечание к фото: мы никогда не смотрим выше)
Читать дальше →
Total votes 59: ↑51 and ↓8+43
Comments33

Баланс в играх жанра Tower Defense (часть 2)

Reading time9 min
Views35K
В первой части мы начали рассказывать о балансе юнитов в нашей игре жанра TD, которая неплохо себя показала, добравшись до топовых мест в своих жанрах US, RU и др. Appstore, получила фичеринг в разделе «Игры» в RU Google Play и в New&Noteworthy в 60 странах Appstore.
В данной статье мы затронем тему создания новых типов башен по принципу «от рассмотренной ситуации – к юниту», расскажем о расчете параметров крипов и дадим описание бонусов.


Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments30

Автономная кроссплатформенная монолитная программа на Java

Reading time21 min
Views62K
Я люблю desktop-приложения. Признаваться в этом нынче, похоже, стыднее, чем в связях с иностранной разведкой, но это так. Нет, это не значит, что я не люблю интернет-технологии. Более того, некоторые я не только уважаю, а даже более-менее знаю. Но, тем не менее, я скучаю по тем временам, когда программа писалась на одном компьютере, потом компилировалась и запускалась на других, разных компьютерах. Тогда везде (почти) была одна система — Windows с одной и той же API, почти не было проблем совместимости на уровне приложений, никто не материл разработчиков браузеров — все берегли нервы на разработчиков WinAPI, которые умудрялись создавать конфликты даже внутри нее одной. Но это я, конечно, иронизирую, а если серьезно — иногда и сейчас хочется написать просто desktop-приложение, да так, чтобы работало оно на всех популярных системах. Трудно? Если подумать и покопать, то не очень.

Еще я люблю языки высокого уровня с аккуратной архитектурой и строгой типизацией. Мои фавориты — Java и C#. Оба они предоставляют разработчику множество преимуществ по сравнению с C++, оба избавляют от ряда забот. Чем приходится платить? Тем, что таскаешь за собой тяжелую колоду, которая называется Oracle JVM, .NET или mono. Все три колоды весят сотни мегабайт и лицензию имеют такую, что каждый пользователь вынужден качать эту штуку сам, не путая при этом разрядность своего компьютера, а главное — программа на Java не может быть совместима со всеми версиями JVM разом, не так ли? И вот — мы приходим к тому, что просто скинуть программку другу (или миллиону друзей) и не заботиться о том, что она у него не запустится, не выходит. Приходится делать хитрые сетапы, вбивать костыли, и это я еще не упомянул .NET — однажды я видел у друга сразу 3 установленных версии, причем все три были нужны разным приложениям…

Стоп! А давайте напишем программу на Java, но так, чтобы она не требовала установки на машину какой-либо JVM, чтобы одним касанием собиралась под Windows, Linux и OS X и чтобы при этом занимала совсем чуть-чуть; так, чтобы никто даже не понял, что она написана, скажем, не на C. Невозможно? Совсем наоборот! (И нет, я имею в виду не gcj, который лишает Java всех ее прелестей. Рефлексия будет работать и даже сторонние jar вы сможете запускать).

Ну и как это сделать?
Total votes 156: ↑146 and ↓10+136
Comments80

ASP.NET MVC. Урок 0. Вступление

Reading time2 min
Views783K
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:
  • Это .net. Я знаю .net и С#.
  • Это компилируемый код.
  • Это не ASP.NET WebForms, я работаю с html-кодом.
  • Используется MVC-паттерн.
  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
  • Отличные инструменты отладки.


Читать дальше →
Total votes 290: ↑215 and ↓75+140
Comments67

Распознавание некоторых современных CAPTCHA

Reading time15 min
Views79K
Именно так называлась работа, представленная мной на Балтийском научно-инженерном конкурсе, и принёсшая мне очаровательную бумажку с римской единичкой, а также новенький ноутбук.

Работа заключалась в распознавании CAPTCHA, используемых крупными операторами сотовой связи в формах отправки SMS, и демонстрации недостаточной эффективности применяемого ими подхода. Чтобы не задевать ничью гордость, будем называть этих операторов иносказательно: красный, жёлтый, зелёный и синий.

Читать дальше →
Total votes 319: ↑313 and ↓6+307
Comments148

Особенности строк в .NET

Reading time10 min
Views106K
Строковый тип данных является одним из самых важных в любом языке программировании. Вряд ли можно написать полезную программу не задействовав этот тип данных. При этом многие разработчики не знают некоторых нюансов связанных с этим типом. Поэтому давайте рассмотрим кое-какие особенности этого типа в .NET.

Итак, начнем с представления строк в памяти


В.NET строки располагаются согласно правилу BSTR (Basic string or binary string). Данный способ представления строковых данных используется в COM (слово basic от языка программирования VisualBasic, в котором он первоначально использовался). Как известно в C/C++ для представления строк используется PWSZ, что расшифровывается как Pointer to Wide-character String, Zero-terminated. При таком расположении в памяти в конце строки находится null-терминированный символ, по которому мы можем определить конец строки. Длина строки в PWSZ ограничена лишь объемом свободной памяти.
Читать дальше →
Total votes 83: ↑78 and ↓5+73
Comments34

10 фраз, после которых ваше резюме отложат в сторону

Reading time1 min
Views14K
На TechRepublic опубликована любопытная заметка о том, какие слова и словосочетания лучше всего не использовать при составлении резюме. Дело не в том, что они заведомо плохие, а в том, что они уже стали шаблонными и любого опытного эйчара приведут в разражение. Итак, 10 стандартных клише, которым не место в современных резюме:

* Results-oriented professional (специалист, ориентированный на достижение результата)
* Cross-functional teams (имеется различная специализация)
* More than [x] years of progressively responsible experience (более, чем столько-то лет опыта, в чем-то отмеченного и зафиксированного)
* Superior (or excellent) communication skills (высочайшие способности к коммуникации)
* Strong work ethic (строгое соблюдение трудовой этики)
* Met or exceeded expectations (соответствую или превосхожу ожидания)
* Proven track record of success (есть подтверженный список достижений)
* Works well with all levels of staff (умение хорошо срабатываться с сотрудниками всех уровней)
* Team player (умею работать в команде)
* Bottom-line orientation (ориентирован на результат)

Собственно говоря, как пишет автор этой заметки, раздражаться работодатель будет не из-за самих формулировок, а из-за того, что эти фразы будут «висеть в воздухе», то есть не будет фактов, их подтверждающих (то, что вы себя кем-то считаете, вовсе не значит, что так и есть на самом деле; есть подтвержденный список достижений, но кем они доказаны и в соответствии с какими стандартами, и где они сами в резюме? под чьи ожидания вы подходите? Напишите их) и так далее.

Интересно, как обстоит с этим дело в России — у нас же многое перенималось по западным канонам раньше?
Total votes 18: ↑10 and ↓8+2
Comments14

Information

Rating
Does not participate
Location
Львов, Львовская обл., Украина
Date of birth
Registered
Activity