Search
Write a publication
Pull to refresh
90
0

Энтузиаст

Send message

Секреты тернарного оператора

Reading time4 min
Views162K
Каждый уважающий себя программист С\С++ знает что такое тернарный оператор и большинство использовало его хотя бы раз в своих программах. Но знаете ли вы все секреты тернарного оператора? Какие потенциальные опасности сопряжены с его использованием и какие, казалось бы не связанные с его прямым предназначением, возможности в нем таятся? Эта статья дает вам возможность проверить свои знания и, возможно, узнать что-то новое.
Читать дальше →

Bitcoin: основные принципы майнинга

Reading time8 min
Views624K

(источник)

Про Bitcoin (BTC) на Хабре писали много (в последнее время даже чересчур много). Как он работает, об интересе к нему со стороны правительства и спецслужб. Биткойн не раз пытались похоронить и затем откопать назад. Даже проводили экскурсии на страусиную ферму. Но как-то, глядя на это, не складывалось целостной картины.

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

Object oriented C

Reading time4 min
Views31K
Вам дали задание написать программу на С, а вы уже забыли как может работать программа, в тексте которой нет ни одного слова class или virtual? Или может быть вы влюблены в простоту и строгость ANSI C, но иногда вам не хватает объектно-ориентированных свойств языков более высокого уровня? Или просто интересно взглянуть на старый добрый С с немного другой стороны? В любом случае в данной статье я покажу несколько простых приемов, с помощью которых на C вполне можно думать и писать объекто-ориентированно.
Читать дальше →

Отладка native-кода под Android: ручное и автоматизированное тестирование

Reading time18 min
Views17K
С развитием и ростом популярности ОС Android количество и разнообразие устройств под её управлением неуклонно растёт. Из-за различий в архитектуре, предназначении и оптимизации скорость и стабильность работы исполняемого кода может значительно изменяться. Поэтому, для обеспечения стабильности и оптимизации работы приложений и ОС, особенно использующих особенности конкретной архитектуры, платформы, или кода, портированного с других платформ, стоит особо внимание уделить процессу отладки кода под Андроид. В этой статье пойдёт речь о ключевых моментах и особенностях работы с native-кодом под Android. Всем, кому интересен этот мануал, прошу под кат.

image


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

Пузырьковая сортировка и все-все-все

Reading time5 min
Views641K

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

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

image: пузырьки

Сделать первый шаг в изучении сортировок

Bitcoin: Как получить 25+ Mhash/s бесплатно без смс

Reading time5 min
Views309K

Добрый день, дорогой %username%!
Наверняка Вы уже слышали о Биткоинах. Возможно, Вам уже удалось ими попользоваться! Великолепно. Как насчет того, чтобы, не напрягаясь, начать майнить криптовалюту на 25 (50, 75, 100,…, 25n) Мегахешах в секунду? Как, у Вас уже есть суперкомпьютер для генерации блоков? Как насчет того, чтобы добавить 25n Мегахешей к Вашей вычислительной мощности прямо сейчас?

Есть отличный сервис Windows Azure от Microsoft. Вкратце, нам дают возможность пользоваться удаленной виртуальной машиной с 20 ядрами для различных серверных решений, вычислений, etc. Но для нас, любителей бесплатного, конечно, важен бесплатный триал на 3 месяца. Естественно, есть определенные ограничения для бесплатной версии, но нас они особо не затронут. Что нам нужно сделать (и что я пошагово опишу в этой статье) это:

  1. Создать 3 виртуальные машины (8 + 8 + 4 ядер)
  2. Подключиться к виртуальным машинам при помощи виртуального рабочего стола
  3. Зарегистрироваться на публичном пуле (в статье я буду использовать Slush's Pool в качестве примера)
  4. Установить и настроить нужный для майнинга софт
  5. Запустить этот софт
  6. Ждать
  7. Получать биткоины

Всех заинтересовавшихся прошу под кат.

Update: добавил описание как майнить Litecoin на Windows Azure. Получается гораздо эффективнее майнинга Bitcoin.
Читать дальше →

Учимся писать в информационном стиле

Reading time2 min
Views106K
По работе я пишу тексты: посты на хабр, email-рассылку, статьи в СМИ. Пишу уже пару лет, последние полгода не меньше двух текстов в неделю. Значительным шагом в развитии моего навыка письма было открытие для себя информационного стиля и советов Максима Ильяхова.

Цель текста в информационном стиле — донести информацию до читателя. Информационный стиль: лаконичный, однозначный, точный и объективный. В информационных текстах нет лишних слов, эмоций, личного мнения. Они читаются легко и быстро.

Максим вводит понятие стоп-слов. Стоп-слова не характерны для текстов в информационном стиле и если вы встретили его — задумайтесь и перефразируйте это место. Стоп-слова это «кстати», междометия, модальные глаголы, отглагольные существительные и другие, всего около 100.

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


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

Программист ли я?

Reading time6 min
Views118K
Именно таким вопросом я задался сегодня утром, придя на работу. Вроде бы все признаки программиста есть: код пишу уже не первый год, за плечами не один проект (как провальные так и успешные), разбираюсь в структурах данных, алгоритмах и их оценке, знаю, как работают сети и сам компьютер вплоть до железного уровня, знаю и использовал скрам, канбан и иже с ними. Честно ходил на конференции послушать, а так же честно выступить. С огоньком в глазах читал лекции студентам и рассказывал каково это быть программистом. Многие из них пошли на работу программистами, самых толковых я забирал себе в команду. Читал тренинги по паттернам, JavaScript и .NET, проводил хакатон, участвовал в хакатоне, и радовался как ребенок от этих самых хакатонов.
Читать дальше →

Домашний сервер «всё-в-одном» — success story

Reading time9 min
Views139K
Жил да был у меня роутер одной хорошей фирмы на букву «Dead». Ну, это с ним, собственно, и случилось.
Посмотрел я на цены новых, на кучу компьютерного хлама в углу, на список подключений на домашнем компе… И понял, что не нужен мне роутер. Соберу свой, с нормальной маршрутизацией, DNS, WINS, i2p, блекджеком и так далее.
Как это было?

Разработка кроссплатформенных модульных приложений на C++ с библиотекой wxWidgets

Reading time31 min
Views32K

Введение



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

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

В этот раз речь пойдет о создании кроссплатформенных приложений с плагинами на C++ с использованием библиотеки wxWidgets. Рассматриваться будут операционные системы Windows, Linux и OS X, как наиболее популярные.

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

Изменение коммитов в Git

Reading time2 min
Views298K
Это пост для тех, кто начинает работу с Git. Все, что здесь написано по частям можно найти в многочисленных простынях о Git на Хабре. Но я подумал, что неплохо было бы иметь отдельный предельно понятный топик, который бы гуглился по запросу «git изменение коммитов».
Читать дальше →

Стражи ночи

Reading time9 min
Views82K
Будучи высококвалифицированным исследователем, я потратил немало времени на продвижение науки вперёд. Но я родился на Юге и искренне убеждён, что прогресс — это выдумка, и что нужно готовиться к Судному дню, к жатве того, что мы посеяли и к появлению быстрых зомби, медленных зомби, и даже вежливых зомби, которые обращаются к вам «сэр» или «мадам», но в итоге пытаются съесть ваш мозг дабы заполучить ваши навыки. Когда нагрянет революция, нужно быть готовым; поэтому в моменты тишины и покоя, когда я не произвожу очередной прорыв в науке, я размышляю над тем, что же я буду делать, когда прогноз погоды изменится на «РЕКИ КРОВИ ЦЕЛЫЙ ДЕНЬ ДО СКОНЧАНИЯ ВРЕМЁН».

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

Но! Но… Самым важным членом моей банды будет системный программист, ибо в гоббсовском кошмаре невероятных масштабов умеющему отладить драйвер устройства или распредёленную систему человеку можно доверять; системный программист видел ужасы Вселенной и понимает безысходность бытия. Системный программист писал драйверы для устройств, прошивку которых создавал то ли пьяный ребёнок, то ли трезвый карась. Системный программист отлавливал проблему с сетью через восемь машин, три часовых пояса и с дружеским визитом в Омск, откуда ее перенаправили в левое переднее копыто той лошади, что избавила Трою от перенаселения.1 Системный программист читал исходники ядра для лучшего понимания процессов мироздания и видел комментарий «И ЭТО РАБОТАЕТ ЛОЛ» в коде планировщика, и не смеялся он, но плакал; и отправил он патч ядра для восстановления баланса Силы и устранения инверсии приоритетов, что приводила к зависанию MySQL. Системный программист знает, что делать, когда общество падёт, потому что он уже живет в мире, где царит беззаконие.
Читать дальше →

Введение в Android NDK

Reading time9 min
Views243K
Для разработки приложений под ОС Android, Google предоставляет два пакета разработки: SDK и NDK. Про SDK существует много статей, книжек, а так же хорошие guidelines от Google. Но про NDK даже сам Google мало что пишет. А из стоящих книг я бы выделил только одну, Cinar O. — Pro Android C++ with the NDK – 2012.

Эта статья ориентирована на тех, кто ещё не знаком (или мало знаком) с Android NDK и хотел бы укрепить свои знания. Внимание я уделю JNI, так как мне кажется начинать нужно именно с этого интерфейса. Так же, в конце рассмотрим небольшой пример с двумя функциями записи и чтения файла. Кто не любит много текста, тот может посмотреть видео версию.
Читать дальше →

Извлекаем золото из старой электроники

Reading time2 min
Views783K


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

Инженер и химик Джозеф Мурчинсон (Josehf Murchison) опубликовал на сайте Instructables пошаговую инструкцию, как выплавлять золото из старых электронных приборов, которые вы собирались выбросить на свалку: старые ноутбуки, телефоны, камеры, принтеры, сканеры и прочее ненужное барахло.
Читать дальше →

Добавление широкоформатных разрешений в Grand Theft Auto

Reading time5 min
Views40K
image
Глядя на серию постов о тридцати строчном javascript программировании, тоже захотелось что-нибудь написать, правда не в 30 строк, но потратив минимум времени, just for fun. Был скачан установщик классической Grand Theft Auto для Windows, а т.к. эта GTA работает только в стандартных разрешениях с соотношением сторон 4:3, я решил написать плагин, который бы запускал её в родном разрешении моего монитора(1920x1080).
Читать дальше

Правильно ли работает ваш дизассемблер?

Reading time3 min
Views14K
Сегодня я хочу рассказать об одной интересной сложности декодирования/дизассемблирования IA-32 инструкций.

Перед прочтением этой статьи рекомендую обратиться в статье «Префиксы в системе команд IA-32», описывающей общую структуру IA-32 команды и существующие префиксы. В этой статье я подробнее расскажу про обязательные префиксы (англ. mandatory prefixes) и некоторые нюансы, связанные с ними.
Читать дальше →

Ну, Pebble, погоди

Reading time9 min
Views38K
image
У меня появились очередные умные часы. Pebble.
Поначалу я хотел их отдать коллегам-гаджетоманам, не распаковывая. Ведь мои руки еще помнят часы будущего от Google и Sony. Ничего, кроме сыпи и грусти они не вызывали, хотя дизайн Sony SmartWatch был чудесным.

Ладно, думаю, один вечер поношу Pebble на левой руке. Правая рука у нас для мышки. Часы не раздражали. Я не раздражался. Мало того, в часах открылась чудесная дверь, а за дверью — клад. Натуральное SDK без дураков. То есть человек управляет устройством, а не наоборот. Старомодный язык С и черно-белый экран — разве это не чудо!? Никаких ненавистных REST, паттернов, репозиториев и unit-test-ов. Помолодев на 30 лет, я сделал три приложения и написал маленький обзор рыжего устройства и процесса программирования для Pebble.

Под кнопкой 7 картинок, 7 кусков кода, 7 ссылок и 7 вредных советов.
Читать дальше →

Теория относительности в картинках

Reading time6 min
Views372K
В своей статье я хотел бы рассказать о теории относительности. Эта теория не требуется в представлении. С самого своего создания она была окутана ореолом тайны, поскольку полностью подрывает наши привычные представления о пространстве и времени. Все мы в школе учили формулы теории относительности, но мало кто действительно понимал их. И это не удивительно, ведь человеку, чтобы по-настоящему понять какую-то теорию во всей её красоте, полноте и непротиворечивости, не достаточно знать формулы. Нужно иметь какой-то визуальный ориентир, нужна динамика, чтобы было что-то, что можно повертеть в руках. Я решил восполнить этот пробел и написал небольшую программку, в которой можно «повертеть в руках» пространство-время. Мы, как настоящие исследователи, с помощью небольших экспериментов попытаемся выяснить основные свойства этой загадочной материи.
Под катом много картинок (и ни одной формулы).
Читать дальше →

Два парадокса в программах на языке C

Reading time3 min
Views30K
Хочу рассказать о двух странностях, с которыми мне пришлось столкнуться, программируя вычислительные алгоритмы на языке C.

Итак, первое неожиданное поведение для некоторых программистов. Вот маленькая прога.

#include <stdio.h>
int main()
{
    unsigned char a = 1, b;
    b = ~a >> 1;
    printf("%u\n", b);
    return 0;
}


Разберем ее. Поразрядная операция ~ инвертирует состояние каждого бита байта a, в который изначально записана единица. В результате должны получить 11111110b, то есть 254. Сдвигая этот байт вправо на один бит, должны получить 127. Однако код, который дает, например, компилятор gcc, выводит в консоль число 255?!

Сначала я подумал о том, что дело в приоритете — вдруг у компилятора приоритет операций «косячит»? То есть будто бы сначала делается сдвиг, а потом — инверсия (а что, логично...). Так в чем же дело?
Читать дальше →

Information

Rating
8,165-th
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity