Pull to refresh
38
0
Муслимов Рустем @muslimov

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

Send message

Избранное Хабра в PDF

Reading time3 min
Views17K
Всех с наступившими!

image

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

UPD:
— Исправлена ошибка «too large on page» (подробнее на github) Спасибо Bifidokk и StreetAngel
— Авторы топиков сделаны ссылкой
— Добавлена возможность сохранять избранное только из указанных блогов

Читать дальше →
Total votes 201: ↑192 and ↓9+183
Comments113

О ненависти к С++

Reading time12 min
Views62K
С++ or not C++, C++ или Java/Python/Ruby? Как часто вы задаёте или слышите подобные вопросы? Не хотелось бы поднимать очередной холивар — по моему мнению, умные люди давно должны были бы прийти к выводу, что при выборе языка нет той серебряной пули, которая бы поставила окончательную точку, — у каждого языка есть свои плюсы и минусы и чаще всего проблемы в прокладке между клавиатурой и стулом.

Читать дальше →
Total votes 112: ↑87 and ↓25+62
Comments180

Шаблонная магия, паттерн CallWithType

Reading time19 min
Views5.3K
Доброго времени суток, уважаемые Xабровчане!

В этой статье я хочу рассказать о том, как в С++ можно делать преобразование данных времени компиляции (типов) в данные времени выполнения (целые значения) и обратно.

Пример:
int nType = ...;
 
if( boost::is_base_of< ISettable, /* ... magically resolve type hidden by nType here ... */ >::value )
{
    // Do something
}
else
{
    // Do something else
}

Весь этот топик направлен на то, чтобы понять, что же надо написать вместо «magically resolve type hidden by nType here».
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments49

Hg Init: Часть 6. Архитектура репозиториев

Reading time5 min
Views30K
Это шестая, заключительная часть из серии Hg Init: Учебное пособие по Mercurial от Джоэля Спольски (Joel Spolsky). Предыдущие части:



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

Часть 6. Архитектура репозиториев



Наш рецепт становится все лучше:

Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments17

Hg Init: Часть 3. Привыкаем работать в команде

Reading time7 min
Views110K
Это третья часть из серии Hg Init: Учебное пособие по Mercurial от Джоэля Спольски (Joel Spolsky). Предыдущие части:


Одно из преимуществ использования Mercurial — возможность работать командой над одним кодом. Mercurial позволяет каждому работать независимо и помогает объединять сделанные изменения.

Часть 3. Привыкаем работать в команде




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

Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments46

Хабраквест с элементами космонавтики и геокешинга [done!]

Reading time3 min
Views12K
По мотивам habrahabr.ru/blogs/DIY/106307 и habrahabr.ru/blogs/popular_science/75150

Публикую просьбу blackover в виду весьма животрепещущего вопроса.
image
Запустил из Калининградской области шар, наполненный гелием, с фотиком на борту, а он, такой-сякой, пролетел всю мою область, Литву и приземлился почти у границы с Латвией.
Его координаты: 55.83593 Latitude, 25.87795 Longitude.
Необходимо раньше, чем остальные забрать его оттуда. Награда — вы будете первыми, кто увидит фотки с него, но оборудование необходимо вернуть (там дорогие мне вещицы).

Искать надо, скорее всего, правее метров на 20, вот такой агрегат (первая картинка)
Конечно, в худшем варианте, контейнер возможно лопнул, и там только маячок валяется, он такой image его размер с ладонь.
Вот усредненная координата www.maps.lt/map/?lang=lt#obj=617640;6190660;Pa%C5%BEym%C4%97tas%20ta%C5%A1kas;&xy=617723,6190645&z=2000&lrs=orthophoto,stops
Вот с учетом возможного смещения на северо-запад www.maps.lt/map/?lang=lt#obj=617678;6190709;Pa%C5%BEym%C4%97tas%20ta%C5%A1kas;&xy=617719,6190690&z=2000&lrs=orthophoto,stops


Прошу нашедшего связаться со мной или с blackover. Мой Skype: ale.x.r

Читать дальше →
Total votes 251: ↑246 and ↓5+241
Comments213

Релиз Firebird 2.5: Производительность и Аудит

Reading time2 min
Views13K

4 октября выпущен Firebird 2.5, 5-й релиз реляционной СУБД с открытым кодом. Пресс-релиз (английский) здесь, скачать дистрибутивы и исходные коды можно на www.firebirdsql.org. Доступны 32- и 64-битные версии для Windows и Linux, MacOSX, Solaris и HP-UX появятся позже.

Новые возможности Firebird 2.5

• Новая архитектура SuperClassic. Firebird 2.5 представляет новую архитектуру под названием SuperClassic, которая позволяет получить большую отдачу от многопроцессорных и многоядерных серверов, и работать с еще большим количеством пользователей
• Аудит. Новые функции Services API позволяют вести аудит запросов к серверу практически в реальном времени, и анализировать все запросы, выполняемые над базой данных.
• Запросы между базами данных. Firebird 2.5 позволяет из хранимых процедур, триггеров и блоков кода одной базы данных обращаться к другим базам данных Firebird.
• Расширенное управление пользователями. Управление пользователями теперь доступно через SQL-операторы
• Другие возможности включают в себя автономные транзакции в коде PSQL (хранимых процедурах, триггерах и блоках кода), регулярные выражения в SQL – SIMILAR TO, асинхронное отключение соединений, расширения возможностей мониторинга и многое другое.

Более подробную информацию о всех нововведениях можно прочесть в документе Release Notes Firebird 2.5.

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments76

South — новый клёвый syncdb

Reading time3 min
Views26K
Я совсем недавно начал работать с Django и меня практически сразу же взбесила ущербная команда syncdb, которая ничего толком не синхронизирует, умеет лишь создавать таблицы для новых моделей.

А добавление или удаление полей в уже существующие модели превращается в настоящий pain in ass — приходится «подсматривать» за тем, как ORM создала бы таблицы заново (manage.py sqlall) и вручную делать ALTER TABLE для изменившихся столбцов таблиц.

То есть, ORM в Django так или иначе предполагает активный трах с SQL shell, потому что в процессе прототипирования эти поля в моделях изменяются просто пачками.

Погуглив, я нашел несколько способов...
Total votes 35: ↑34 and ↓1+33
Comments34

Работа и аспирантура в Швейцарии

Reading time3 min
Views21K
Здравствуйте, дорогие хабравчане. Так вышло, что около полугода назад у меня получилось устроиться на работу в Швейцарии, в швейцарскую федеральную политехническую школу (EPFL) в Лозанне. К текущему моменту накопилось множество различных впечатлений, о которых я и хочу рассказать.
Читать дальше →
Total votes 119: ↑111 and ↓8+103
Comments117

Удалённая переустановка linux на примере Debian

Reading time7 min
Views24K
Существует множество фичей упрощающих жизнь системному администратору. Различные системы удаленного управления позволяют установить ОС на девственно-чистый сервер и сегодня это совсем не проблема. Даже наличие второго винчестера превращает проблему переустановки операционки в банальность. Поэтому в этой статье рассмотрим самый суровый из случаев: пусть на сервере имеется только один полностью разбитый винчестер, а наша задача — удалённо переустановить ОС.

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

Читать дальше →
Total votes 108: ↑97 and ↓11+86
Comments39

Правило чтения по спирали

Reading time6 min
Views14K
Техника, известная как «Чтение по спирали/по часовой стрелке» (“Clockwise/Spiral Rule”) позволяет любому программисту разобрать любое объявление языка Си.

Следуйте этим простым шагам:
Читать дальше →
Total votes 145: ↑132 and ↓13+119
Comments42

Использование boost::variant для описания состояний модели

Reading time3 min
Views10K
В моделях данных очень часто требуется хранить некоторые переключаемые состояния. Классический способ в С++ для этого — использование перечислимых типов enum.

Например, если у вас в программе пользователь может переключаться между двумя экранами, вы заводите enum screen { screen_one, screen_two }; и переменную screen cur_screen_. Отрисовщик должен получить у модели «текущий выбранный экран», и затем отрисовать его, запрашивая у модели дополнительные данные, относящиеся именно к этому экрану. Что-то вроде:

switch (model.cur_screen())
{
case screen_one:
  model.get_screen_one_elements();
  ...
case screen_two:
  model.get_screen_two_elements();
  ...
}


При использовании такой модели, программист может запрашивать данные, которые для текущего состояния совершенно не актуальны. Например, вызвать метод get_screen_two_elements() для получения списка элементов второго экрана, когда текущий экран — первый. Хорошей практикой является использование ассертов вида ASSERT(cur_screen_ == screen_one) в методах, зависимых от конкретного экрана. Это обеспечивает некоторый контроль времени выполнения.

Но есть способ обеспечить контроль времени компиляции и более явное разделение состояний с помощью boost::variant.

Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments17

Что такое Pimpl по версии Qt, и с чем его едят!

Reading time12 min
Views39K

Вступление.



Часто в документации от Qt встречается термин Pimpl. Кроме того, те кто хоть немного копался в исходном коде Qt часто видел такие макросы как: Q_DECLARE_PRIVATE, Q_D. А также встречал так называемые приватные заголовочные файлы, название которых заканчивается на "_p.h".
В этой статье я попробую приоткрыть ширму за всей это структурой.

Pimpl, что это?


Pimpl — Pointer to private implementation. Это одно из названий паттерна программирования. Еще его называют чеширским котом — «Cheshire Cat» (это название мне больше нравится). В чем суть этого паттерна? Основная идея этого паттерна — это вынести все приватные члены класса и, в не которых случаях, функционала в приватный класс.
Отсюда название «чеширский кот» — видно только улыбку, а все остальное остается невидимым, но оно несомненно есть :-) Кто не помнит этого замечательного кота, может обратится к первоисточнику, к книге Льюиса Кэрролла «Алиса в стране чудес». Очень интересная книга, особенно если читать в оригинале.
Что это дает?
Читать дальше →
Total votes 48: ↑46 and ↓2+44
Comments70

Где купить DNS Хостинг?

Reading time1 min
Views9K
Публикуется по просьбе uncia

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

Сейчас пользуюсь editdns.net — на мой взгляд лучший DNS хостер по следующим важным причинам:
1. Из темплейта прописывает Google Apps.
2. Поддерживает SRV записи необходимые для работы Jabber.
3. Умеет синхронизировать записи между разными доменами, т.е. досточно внести изменения в один домен, как те же именения внесутся на других доменах.
4. Куча других полезных функций.

Единственный минус editdns.net — это цена — С нового года сервис становится платным.
5$ в месяц. т.е. в год 60$ — на мой взгляд это очень дорого, при том что сейчас домен стоит в год ~100 руб.
Т.е. оставаясь с editdns.net — мне придется платить за хостинг DNS как за 20 доменов — и этот факт не радует.

Подскажите, пожалуйста, альтернативные платные DNS хостинги знающие Google Apps, умеющие SRV.
Заранее спасибо!
Total votes 15: ↑6 and ↓9-3
Comments24

Information

Rating
Does not participate
Location
Россия
Registered
Activity