Pull to refresh
3
0
Send message

Переопределение стандартных типов в C++

Reading time1 min
Views4.4K
Нередко программисты для удобства и краткости переопределяют простейшие типы данных, дают им другие имена. Чаще всего это делаетс примерно так:

typedef unsingned int uint32;
typedef signed int int32;
typedef unsigned char byte;

Ну и так далее. Выступлю с предложением: а почему бы не переопределить простейшие типы, написав для каждого типа свой класс? Расход памяти при хранении таких объектов увеличиться по идее не должен(ессно, виртуальные функции не используем). Например, пишем класс Double, примерно так:

class Double
{
public:
     Double(const Double& value);
     Double          operator+(const Double &right) const;
     Double          operator-(const Double &right) const;
     Bool              IsPositiveInfinity();
     Bool              IsNegativeInfinity();
     
private:
     double _value;
     
}



Или например для типа char:

class Char
{
public:
    Char(char value);

    Bool IsDecimalDigit() const;
    Bool IsLetter() const;
    Bool IsWhiteSpace() const;
    
    Bool operator==(const Char &other);
    Bool operator!=(const Char &other);

private:
    char _value;
};


Таким образом, можно работать с простейшими типами как с объектами, повысить удобочитаемость кода, иметь больше контроля над тем что происходит в программе(например, для подсчета количества умножений, выполняемых над типом double достаточно поместить счетчик в перегруженный оператор).

Оверхеда по производительности/расходу памяти по идее быть не должно.

Пока не могу поделиться плюсами/минусами такого подхода, но постепенно внедряю его в свои C++ библиотеки.
Total votes 12: ↑5 and ↓7-2
Comments29

OpenTTD 0.7.0

Reading time1 min
Views921
<img src="openttd logo
Вчера обновился самый долгоживущий симулятор транспортного магната — OpenTTD.

Нововведения:
  • Улучшена система заданий (условность выполнения, возможность одновременно безостановочного (non-stop) и промежуточного (via) пункта вместо одного из двух)
  • Загрузка AI и графики с центрального сервера
  • Фреймворк для создания своего AI
  • Возможность владения б́ольшим количеством машин
  • Неводные края карты
  • Снятие ограничений на размер и количество окон
  • Ограничение компаний — 15, сетевых клиентов — 255
  • Основанные на пути сигналы (умные светофоры)

Читать дальше →
Total votes 78: ↑74 and ↓4+70
Comments58

Pascal, чайная ложка №0

Reading time5 min
Views5.5K
Контингент Хабрахабра очень разнообразен. И как гласит статистика, делится на много слоев. Здесь каждый желающий может найти информацию на свой «вкус и цвет». Но не все здесь великие программисты, специалисты IT-индустрии или просто сумасшедшие гики.
Мне, как лицеисту, ученику 11-го класса хотелось бы внести свою лепту в продвижение процесса изучения языков программирования.
В странах СНГ, в школьном курсе, чаще всего, преподается Pascal, и его основы. Я сам изучал его, и был рад этому. Но не все школы (лицеи, техникумы) имеют возможность дать глубокие знания и порой приходится учиться самому. Как по мне, хорошей практикой являются школьные олимпиады. Об этом и многом другом я хотел рассказать.
Читать дальше →
Total votes 48: ↑21 and ↓27-6
Comments62

А в каждом ли дне 24 часа?

Reading time1 min
Views555
Сегодня наткнулся на функцию, которая должна вычислять количество дней между датами, внутри нее было написанно примерно следующее:

$arr_mk = mktime (0, 0, 0, date('m', strtotime($arr_date)), date('d', strtotime($arr_date)), date('Y', strtotime($arr_date)));
$dep_mk = mktime (0, 0, 0, date('m', strtotime($dep_date)), date('d', strtotime($dep_date)), date('Y', strtotime($dep_date)));

$mk_diff = $dep_mk - $arr_mk;
$days = bcdiv($mk_diff/86400); // 60*60*24

Вроде все верно на первый взгляд, но работала она подозрительно.
Читать дальше →
Total votes 23: ↑19 and ↓4+15
Comments21

«Доктор Веб» обнаружил троян в банкоматах

Reading time1 min
Views3.6K
С сегодняшнего дня перестаю пользоваться банкоматом — доктор Веб нашел вирус, который ворует данные о карточках клиентов. Мошеннику выдается распечатка с данными карточек, включая пин-коды. Как написано на Lenta.ru это не первая вредоносная программа для банкоматов, но впервые злоумышленнику предоставляется возможность получить секретную информацию. До недавнего времени банкоматы не были подключены к интернету, а использовали собственные каналы связи — теперь же банкоматы стоят пачками в каждом торговом центре, подключаются по обычной витой паре — так что, по большому счету и подходить-то не надо — вся информация сливается через интернет. Конечно, списанные со счета деньги можно вернуть, но сколько придется пройти мучений прежде чем сумма вернется, сложно сказать. А если вы находитесь в другом городе, а наличных денег мало или вообще нет? Конечно, не пользоваться картами уже нельзя — они прочно вошли в нашу жизнь. Для себя же решил завести несколько карт, чтобы минимизировать риск потери всех денег.
Total votes 18: ↑9 and ↓90
Comments24

Так лопаются пузыри?

Reading time5 min
Views677
Финансовый кризис, нагрянувший к нам в прошлом году, задел почти все отрасли экономики, не обойдя мимо сферу высоких технологий. Стартапы, до зимы прошлого года, плодившиеся как грибы, одаренные денежным дождиком инвестиционных фондов, были поставлены в сложные условия — особенно это касается тех проектов, разработка которых пришлась на период спада. Многие ресурсы были приостановлены или свернуты.

В этом топике я хочу рассказать об одной кампании, в которой мне довелось принимать непосредственное участие — разработка новой социальной сети. Я специально не буду указывать ни название сети, ни называть имен — так будет правильно.
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments42

Мой личный топ веб сервисов

Reading time1 min
Views2K
Сервисы, которыми я пользуюсь и всячески советую:
  • Basecamp — Удобная система для управления проектами. Как раз сегодня перешёл на следующий тарифный план, теперь у меня есть лимит на 35 проектов, 10гб места, SSL и Time tracking.
  • Wufoo — Позволяет быстро и удобно создавать формы. Лучше, чем программирование тем, что не нужно задумываться о безопасности, удобно настраивать уведомления (есть даже специальная десктопная программа для получения заполненных форм).
  • Dropbox — Синхронизирует одну из папок на вашем компьютере с интернетом. Можно давать на файлы из неё прямые ссылки. Также, можно давать права доступа на внутренние папки другим пользователям — удобно для обмена файлами по работе.
  • Vimeo — Самый удобный видео сервис из тех, что я нашёл. Простой, красивый, отличное качество видео.
  • Google Docs, Google Calendar, Google Reader, Picasa. Ссылок и описаний не дам, странно, если вы сами не знаете эти гуглосервисы.Говорят, что Flickr лучше чем Picasa. Возможно, но мне уже элементарно лень переносить туда фотографии.
То, чем я собираюсь воспользоваться:
  • Zendesk — Онлайн система поддержки пользователей (тикеты). Используется, например, Твиттером.
  • hab.la — Лайв чат для посетителей сайта с возможностью отвечать на их сообщения через джаббер.
То, что мне идеологически нравится но по разным причинам почти не используется:
  • Twitter — Лайвжурнал для ленивых нёрдов и офисного планктона. Но у него есть большой плюс — туда можно писать с мобильного телефона, через смс. Читать совершенно некогда но иногда пишу.
  • Friendfeed — не пользуюсь так как читаю RSS через Google Reader. Но рано или поздно начну.
Безусловно, я мог что- то забыть, поэтому список будет дополняться. Но поскольку это кросспост из моего блога — обновления будут там.
Total votes 32: ↑12 and ↓20-8
Comments11

Как научить ИИ делать продуманные ошибки

Reading time3 min
Views1.7K
Разработчики компьютерных игр подняли интересную тему для обсуждения: как повысить реалистичность искусственного интеллекта, который действует безошибочно. Проблема в том, что во многих компьютерных играх правильный ход или решение просчитывается слишком просто для мощнейших процессоров современных ПК. Например, в виртуальном бильярде компьютер никогда не ошибается и всегда рассчитывает идеальную траекторию шара. Такая же плачевная ситуация в шахматах.

Самый простой способ оглупить ИИ — граничить его вычислительные ресурсы. Конечно, программа сразу станет играть хуже. Для того же бильярда есть следующий вариант: добавлять к удару по правильной траектории случайную погрешность. Но проблема в том, что это снижает реализм игры. В этом случае компьютер начинает делать слишком глупые ошибки. Такие глупые, каких человек никогда бы не сделал.

Другими словами, обычное ухудшение качества игры ИИ не является достаточно реалистичным. Оно не доставляет удовольствия игроку.

Из этого положения есть один выход. Нужно сделать так, чтобы компьютер играл в полную силу, но при этом сдавал игру. Как в спорте — ряд мелких, на первый взгляд, случайных просчётов, которые ведут к проигрышу или значительно увеличивают шансы противника. То есть ИИ должен делать умные, продуманные ошибки.
Читать дальше →
Total votes 102: ↑95 and ↓7+88
Comments45

Написание текстов для сайтов: не пересушить, не пересолить

Reading time4 min
Views2K
Как-то я услышал интересное высказывание одного повара:

— Готовить очень просто! Надо не пережарить и не недожарить, надо не пересолить и не недосолить, надо не пересушить и не перемочить.

Хитрый повар не открыл нам секретов своего мастерства, но во многом он прав: качество произведения заметно тогда, когда автор не впадает в крайности.

Написание текстов на сайт — такая же творческая деятельность, как и любая другая. По моему мнению, свой стиль есть у каждого. И он будет заметен, если его не испортят крайности.

Вот некоторые крайности для статей на сайт:
— пересушенный текст, очень формальный,
— фамильярный текст, панибратское обращение,
— слишком длинный текст,
— слишком короткий текст.
Как правильно приготовить вкусный и полезный текст
Total votes 16: ↑11 and ↓5+6
Comments31

Ruby + Qt4, простой текстовый редактор, ч. 2

Reading time7 min
Views546
В предыдущем посту ( f3ex.habrahabr.ru/blog/54673 ) я писал, как при помощи ruby и Qt4 написать «простой текстовый редактор».
Продолжение портирования примеров из Python+Qt4 на Ruby+Qt4

Часть 2.

Теперь рассмотрим такой вопрос: когда не выбран файл или не сделано изменений в тексте — кнопка «сохранить» должна быть не активной.
За активность отвечает свойство «enabled» в Qt Disigner'e или это свойство можно установить из ruby-кода используя метод setEnabled
Установите для кнопки b_save свойство enabled в false (снимите галочку) и перегенерируйте форму editor.rb.

image

Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments1

ReadySET — свободный набор шаблонов внутренней документации софтварного проекта

Reading time1 min
Views823
Существует такой проект ReadySET, в нём собрана отличная структурированная и упорядоченная коллекция шаблонов внутренней проектной документации. Все шаблоны можно смотреть на сайте, скачать архивом или экспортить через Subversion. Все шаблоны отлично документированы и предоставляют готовую инфраструктуру проектной документации.

Охвачены практически все аспекты: планирование проекта, вижн, сбор требований, разработка, дизайн и архитектура системы, реализация, тестирование, установка, техподдержка и сопровождение. Шаблоны созданы в очень ясном XHTML/CSS формате.

Хотя все шаблоны и документированы, они довольно компактны и требуют некоторых начальных знаний по процессам разработки. Существует также PRO-версия проекта, в ней шаблоны сконверчены для использования в MS Office форматах, а также добавлены несколько дополнительных документов.

Ресурс чрезвычайно полезный. Всё по-английски. BSD License.
Total votes 5: ↑5 and ↓0+5
Comments0

Создан боевой летающий робот, самостоятельно принимающий решения об обстреле целей

Reading time1 min
Views3.7K
Сайт CyberSecurity.Ru поведывает, что оборонный подрядчик Northrop Grumman представил военной общественности свою последнюю роботизированную военную разработку — беспилотный боевой самолет X-47B Unmanned Combat Air System, который производителем назван «самым развитым летающим роботом в мире».

[X-47B, летающий боевой робот]

Названы три основных отличия X-47B от прочих существующих беспилотников.

Во-первых, X-47B способен взлетать и садиться не только на взлётные полосы аэродромов, но также и на авианесущие крейсеры, что значительно сложнее.

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

В-третьих, X-47B обладает совершенной системой ведения боя, которая позволяет ему атаковать не только наземные цели, но также и воздушные объекты — например, другие самолёты.

В качестве вооружений самолёт может нести большие станковые пулемёты и набор крылатых ракет класса «воздух-земля» и «воздух-воздух».

Тот же сайт поведывает, что в этом кибернетическом самолёте и ещё одна особенность, которую не назвали в числе основных, но которая оказалась военным интересна: X-47B обладает автономной системою ведения огня.

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

Читать дальше →
Total votes 124: ↑101 and ↓23+78
Comments156

Big Bang versus Chicago

Reading time1 min
Views457
Просматривая комментарии к россыпи скриншотов под вывеской «Эволюция дизайна графических интерфейсов», с удивлением наткнулся на пару мнений вида «в 90-х Apple в плане GUI отставала от Microsoft».

Ох. Нет-нет, никаких холиворов. Тем более что яблоко от яблони и правда недалеко падает — в разработке интерфейса Windows 95 поучаствовали сразу несколько создателей первого «макинтоша» (ключевые имена: Каппс и Херцфельд) — но сейчас не об этом. Сейчас о том, как воспринимались тогдашние редмондские наработки непосредственно современниками в 1995 году:

image

Кстати, карикатурист Гарри Трудо (Garry Trudeau) отметился в истории Apple Macintosh не столько выложенным выше стрипом, сколько едкой критикой самого первого наладонника Apple Newton Message Pad. Но это уже совсем другая история.
Total votes 25: ↑13 and ↓12+1
Comments4

ITшник это тоже, что и уборщица?

Reading time1 min
Views746
image

Сидим на переговорах с руководством одной из компаний. Ну так как разговор был об IT, то позвали они своего не то сисадмина, ни то эникещика.

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

Посмотрел директор в его глаза и говорит ему: “Ну ладно, оставайся и послушай”.

Вспомнился этот случай как раз, пока думал о том, что IT аудитория не хочет (???) и не понимает бизнес аудиторию, а бизнес аудитория не хочет и не может (!!!) понимать IT аудиторию.

Может это и нормально, или в нашем (IT) королевстве что-то идет не так?

Может, если ITшника обучить немного бизнес-смыслу того, что он делает, то толку будет больше? Хотя, если посмотреть шире, то от специалистов по телефонам, сигнализациям, электрике понимание бизнеса же не требуется?

Так значит ITшник не бизнес человек?
Total votes 46: ↑27 and ↓19+8
Comments35

Новый iPod shuffle изнутри

Reading time1 min
Views6.4K
image

iPod shuffle нового поколения по габаритам меньше батарейки AA. Все кнопки управления плеером вынесены на провод наушников, таким образом, слушать музыку с iPod shuffle с помощью каких-либо других наушников, не Apple, можно, а вот сменить композицию или изменить громкость звука — нет. Навигационных кнопок на корпусе iPod shuffle нет как таковых. После вскрытия корпуса плеера выяснилось, что его процессор, флэш-память и RAM размещены на одном многослойном чипе. Аккумулятор нового iPod shuffle по размеру приблизительно соответствует монете в 10 центов. Его емкость — 73 мАч.
Просмотреть внутренности
Total votes 75: ↑68 and ↓7+61
Comments85

Что важнее — человеческая жизнь или «интеллектуальная собственность»? «Интеллектуальная собственность», конечно.

Reading time3 min
Views4.3K
Во всяком случае так считают работники Priority Dispatch Corporation.

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

Интересно — как чувствуют себя людоеды типа Roman_Mix читая подобные истории?
Ну да ладно - теперь к делу
Total votes 139: ↑118 and ↓21+97
Comments188

Как я гонял на клаве

Reading time1 min
Views1K
Вспомнили на работе про клавогонки. Я немного поиграл, но мои навыки машинистки не дают мне особых шансов )

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

Защиты, из тех, что я увидел — это подсовывание левых букв при копировании и подмена русских букв английскими. Естественно я это увидел не с первого раза )

В итоге задача проста: берём слова из источника (благо они так мило выделяются), вставляем по буковке (мы же печатаем) в поле для ввода, не забывая вызывать событие нажатия кнопки (конкретнее — keyup). Не хватает, конечно, возможности ошибаться — но добавить её легко — было бы время. Также не пугает капча, вылезающая при переходе за 500 знаков в минуту — она обходится с помощью знакомых, или помощью того же JavaScript'а.

Ну и да, ещё необходимы Firefox + Firebug :)

Читать дальше →
Total votes 114: ↑82 and ↓32+50
Comments180

Пять способов самомотивации для достижения поставленных целей

Reading time3 min
Views4.3K
Чувствовали ли вы, будто всё валится из рук? Каждая задача, с которой вы сталкиваетесь, оказывается сложнее, чем вы предполагали и возможно на вашем жизненном пути вас сопровождают постоянные проблемы?
Часто мы попадаем в стрессовые ситуации и чрезвычайно важно не опустить руки и не потерять внутреннюю мотивацию, чтобы выйти победителем из сложной жизненной ситуации. В общем, устраивайтесь поудобнее и встречайте, 5 способов остаться мотивированным и достигнуть поставленных целей.
Читать дальше →
Total votes 24: ↑11 and ↓13-2
Comments11

Information

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