Рубрика «Песочница» - 64

Доброго времени суток, Хаброчитатель!

Возникла у меня необходимость перевести интерфейс одной системы. Перевод для каждой формы лежит в отдельном XML-файле, а файлы группами разбросаны по папкам, что очень неудобно. Решено было создать единый словарь, чтобы в Excel’е работать с переводом всех форм. Данная задача в свою очередь разбивается на 2 подзадачи: извлечь информацию из всех XML-файлов в один CSV-файл, после перевода из CSV-файла создать XML-файлы с прежней структурой. В качестве инструментов были выбраны bash и awk. Первую подзадачу описывать смысла нет, так как она достаточно тривиальная. А вот как распарсить CSV-файл?
Читать полностью »

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

В свое время наличие у значительной части населения Земли выхода в интернет и электронной почты, обеспечило лавинное распространение социальных сетей, а за 10 лет до этого, выход платежных систем в Интернет, повлек за собой бум создания электронных магазинов. Мобильные телефоны с фотокамерами + мобильный интернет и вот вам феномены Instagram и ForthSquare и т.д. и т.п.

Что же следующее?
Читать полностью »

Большинство владельцев ноутбуков Apple знает, что процессор в macbook-ах распаян на плате и не подлежит замене. Поэтому при покупке мака нужно сразу выбирать себе комплектацию с желаемым процессором.

Но эта информация не совсем верна. Да, процессор действительно распаян, но заменить его можно, как обычный BGA чип. И даже если заменить на более мощный, то все будет прекрасно работать. Единственное условие — процессор должен быть совместимой серии, т.е. иметь такую же частоту системной шины. Это необходимо для нормальной работы с чипсетом на системной плате. А другие характеристики проца: частота и кэш- не имеют значения. Таким образом можно получить апгрейд-прокачать проц.Читать полностью »

Как нам от3Dпринтить Россию? Часть I

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

Читать полностью »

Вступление

Эта реализация игры «Уголки» на JavaScript, созданная в целях обучения. Игровой процесс заключается в том, что бы переместить свои фишки из одного угла игрового поля в другое (по определенным правилам) быстрее противника. В этой реализации четыре режима: игра компьютерных игроков, игра с компьютерным игроком, мультиплеер на одном компьютере и мультиплеер по сети.
Читать полностью »

в 14:01, , рубрики: Delphi, orm, Песочница, метки: ,

Всем привет!
Сегодня я расcкажу вам о своем опыте написания ORM для Delphi с использованием RTTI под влиянием практик работы с Doctrine и Java EE.

Зачем?

Под мою власть недавно попал старый проект на Delphi7 в котором ведется активная работа с базой данных под Interbase 2009. Код в этом проекте радовал, но ровно до тех пор, пока речь не заходила о самом взаимодействии с бд. Выборка данных, обновление, внесение новых записей, удаление — все это занимало немало строк в логике приложения, отчего разобраться в коде порой становилось довольно сложно (спасение в добросовестном разработчике, который круглосуточно отвечал на мои глупые вопросы). В мои руки проект был передан с целью устранения старых бед и добавления в него нового модуля, задача которого — покрыть новые таблицы в БД.

Мне нравится MVC подход и очень хотелось разделить код логики с кодом модели. Да и если уж на чистоту — я не захотел для каждой новой таблицы переписывать по новой все get/set методы. Пару лет назад я познакомился с понятием ORM и мне это понравилось. Мне понравился принцип и я был в восторге, применяя его в своей работе.
В тот же момент я ринулся искать в Delphi7 хоть что-нибудь похожее на Doctrine или может генераторы Entity/Facade классов для таблиц… Ни того ни другого. Зато в поисковой выдаче нашлось несколько готовых решений. Например DORM. В целом, отличная штука и, по сути, то что нужно!
Но, не знаю бывает ли у вас, я отказался от готового решения и решился писать свой велосипед. С осознанием того что хочу, с пониманием всех недостатков, я стал на этот скользкий путь и, кажется, дошел до…
Читать полностью »

Привет, читатель!

В этом топике я хотел бы рассказать про такой жанр игр, как MUD
Рок н ролл мертв, а mud еще нет(Multi User Dungeon). Это полностью текстовые MMORPG с элементами ролевой игры, hack and slash и интерактивными квестами.

История

В далеком 1975 году, когда простые люди не могли позволить купить себе компьютер, некому Ричарду Бартлу в школу поставили телетайп — систему с режимом разделения времени, где каждый абонент отвечал по очереди, а весь «разговор» печатался на широкой бумажной ленте. Вопрос-ответ приходилось набирать на клавиатуре. Это был такой древний прообраз ICQ. Самая фишка этого телетайпа заключалась в том, что его алгоритм работы можно было менять. Здесь, нужно добавить то, что Ричард был заядлым игроком настольных RPG и даже выпускал в школе небольшой игровой журнал. Читать полностью »

Вступление

Добрый вечере. В данной статье хочу описать проблемы работы в многопоточной среде, с которыми я встретился и пути их решения. Более пяти лет я занимаюсь разработкой игровых проектов на С++ / Objective C++, в оснвоном под платформу iOS. 2 года назад решил попробывать себя в «нативной» разработке используя только Objective-C. Примерно в тоже время меня заинтересовала технология GCD от Apple (как раз после просмотра очередного WWDC). В первую очередь, в этой технологии меня привлекла гибкая возможность делегирования операций между потоками. Довольно распространненой задачей является загрузка каких-либо игровых ресурсов в низкоприоритетном потоке. Но довольно нетривиальной задачей является смена потока по окончанию операции загрузки на главный поток с целью дальнейшей загрузки в VRAM. Конечно можно было закрыть глаза на эту проблему и использовать Shared Context для графического контекста, но ростущий в то время во мне перфикционизм к собственному коду и решениям проектирования графических систем, не позволил поступить так. Вообщем было принято решение опробывать GCD на «пет» проекте, которым я как раз в то время занимался. И получилось довольно не плохо. Кроме задач решающих загрузку игровых ресурсов я стал использовать GCD там где это было уместно, ну или мне казалось, что это было уместно.

Прошло много времени и вот появились компиляторы полноценно поддерживающие C++11 стандарт. Так как работаю я в текущий момент в компании, занимающейся разработкой компьютерных игр, то особое требование ставится именно к разработке на С++. Большинству сотрудников чужд Objective-C. Да и сам я не питаю особой любви к этому языку (может быть только кроме его обьектной модели построенной по принципам языка Smalltalk).

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

Для этого мне понадобились следующие новшевства С++11 — std::function, variadic templates и конечно работы с std::thread. (std::shared_ptr используется лишь для чувства собственного успокоения). Конечно еще одна цель, которую я поставил перед собой — это кроссплатформенность. И очень был розачарован когда узнал, что компилятор от Microsoft укомплектованый в VS 2012 не поддерживал variadic templates. Но поштудировав немного stackoverflow я увидел, что и эта проблема решается установкой допольнительного пакета «Visual C++ November 2012 CTP».
Читать полностью »

Как найти работу в Германии
Для всех, кто просил описать как искать работу программистом в Германии, а так же для тех, кто в комментариях бездоказательно писал, что Германия далеко не лучшее место для работы, ну и для всех интересующихся написан этот пост.
Читать полностью »

Захожу на гитхаб, ищу репозитории проектов, сходные по профилю с теми, для которых мы ищем программистов.
Просматриваю issues, выбираю подходящие — такие, для которых не потребуется слишком много времени (идеально — вечер) и для которых потребуется разобраться в самом проекте.

У каждого соискателя я спрашиваю ссылку на профиль на гитхабе (или других сервисах) или еще какие способы посмотреть на то, что соискатель делал. Если способа показать свой код у соискателя нет (или, например, на гитхабе только один репозиторий и тот с конфигами) — я кидаю ему ссылку на одну из issues и прошу отправить мне ссылку на pull request по завершении.

По pull request'у сразу видно как соискатель умеет разбираться в чужом коде и как он пишет код. Я не даю классических тестовых заданий — это убийство времени в никуда, этот код будет выброшен, он не поможет никому решить какую-либо задачу.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js