tag:blogger.com,1999:blog-86005143411525081022024-03-06T09:39:45.388+05:00Угол ЭйлераО программировании, веб-разработке, разработке игр и многом другом...Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.comBlogger111125tag:blogger.com,1999:blog-8600514341152508102.post-69201669796370090832023-09-14T15:54:00.005+05:002023-09-14T16:21:00.105+05:00Один из способов синхронизации KeePasscode {
background-color: #efefef;
padding: 0 5px;
border: solid 1px #ddd;
border-radius: 3px;
}
pre code {
background-color: none;
border: none;
padding: auto;
}
У тех, кто еще только планирует пользоваться KeePass для хранения паролей, часто возникает вопрос: можно ли сделать, чтобы была синхронизация между различными устройствами. В общем, ответ «да».
Представленный способ Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-7829049632046352142023-08-25T23:08:00.011+05:002023-08-25T23:24:24.205+05:00Sciter – фреймверк для создания десктопного GUI максимально бытроcode {
background-color: #efefef;
padding: 0 5px;
border: solid 1px #ddd;
border-radius: 3px;
}
pre code {
background-color: none;
border: none;
padding: auto;
}
blockquote {
border-left: solid 8px #ccc;
padding-left: 20px;
margin-left: 0;
}
После небольшого исследования на предмет того как быстро создавать GUI для десктопа на C++ на сегодняшний день, помимо давно Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-54540737087479246632023-08-13T16:29:00.000+05:002023-08-13T16:29:02.462+05:00Пошаговая инструкция по подключению библиотеки Boost к Unreal Engine 4 в виде модуляcode {
background-color: #efefef;
padding: 0 5px;
border: solid 1px #ddd;
border-radius: 3px;
}
pre code {
background-color: none;
border: none;
padding: auto;
}
Следует оговориться, что это лишь один из вариантов.
Например, ваш проект называется QuickStart, библиотека собрана компилятором vc под платформу win64.
Предварительно собрать либы для используемой архитектуры и Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-81303493006835042162023-04-14T12:08:00.009+05:002023-04-14T12:11:46.938+05:00Делегирование задачи деплоя другому проекту в Gitlabcode {
background-color: #efefef;
padding: 0 5px;
border: solid 1px #ddd;
border-radius: 3px;
}
pre code {
background-color: none;
border: none;
padding: auto;
}
Иногда требуется, чтобы разворачивание проекта в Gitlab осуществлял другой проект. Решение довольно тривиально. Для этого в проекте который делегирует в файле .gitlab-ci.yml пишем:
delegate-task:
trigger:
project: Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-63529386937656118142023-03-21T16:32:00.006+05:002023-03-22T12:59:48.126+05:00Как настроить CI в Gitlabcode {
background-color: #efefef;
padding: 0 5px;
border: solid 1px #ddd;
border-radius: 3px;
}
pre code {
background-color: none;
border: none;
padding: auto;
}
Всего лишь еще один способ.
Для версии Gitlab 14.6.2, которую можно посмотреть, по URL /help/ вашего экземпляра.
Сразу хочу оговориться, что рассматривается вариант с экземпляром, развернутым на своём сервере.
Первое чтоИванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-29053156343126307752021-03-20T01:10:00.002+05:002021-03-20T01:41:07.487+05:00Переключение раскладки ctrl+shift в UbuntuКогда-то давно при очередной установке Линукса обнаружил, что переключение языковой раскладки клавишами ctrl+shift не работает. Точнее, как не работает? Переключает-то чудесно, вот только если вдруг используется другое сочетание, например ctrl+shift+c, то вместе со штатно выполняемой функцией переключается и раскладка.
Тогда подумал, что дело во мне: что-то не правильно настроил, не осилил. Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-14448073522754004142016-11-06T10:40:00.005+05:002023-03-21T16:30:14.657+05:00Snippets – приложения для удобного хранения отрывков кодов и их управленем
У программистов в процессе работы часто возникают различные отрывки кодов, которые могут впоследствии пригодиться, но которые трудно запомнить. И такие отрывки часто разбросаны по разным местам и плохо систематизированы.
Это приложение предназначено для того, чтобы навести порядок среди подобных сущностей и иметь к ним относительно простой и удобный доступ.
Конечно, подобных приложений "вагон и Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-52378946419052549072016-10-31T08:54:00.002+05:002016-10-31T09:01:33.943+05:00Добавление нового элемента в ChosenЕсть такой очень хороший jQuery плагин Chosen. Он позволяет из стандартных выпадающих списков `select` делать очень удобные. Но плагин не позволяет работать с добавлениями элементов "из коробки". Все решения, найденные мной в сети, не удовлетворительны.
Предлагаю следующий способ:
var el = $('#select-where-you-want-to-add-element-dynamically').chosen(),
chosen = el.data('chosen');
Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-57227841565304916742015-02-08T10:31:00.002+05:002015-02-08T10:31:51.139+05:00Гвидо: ранний PythonИванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-18516996400286128462015-01-01T18:21:00.003+05:002023-03-21T16:30:45.109+05:00Классическая игра "Морской бой"
Если сервер не доступен, то можете зайти по прямой ссылке.
Для обкатки технологий WebSocket, WebGL, CoffeeScript, Tornado решил попробовать создать простейшую, но классическую игру Морской бой. Что получилось - можно видеть.
Играть можно одному против компьютера и друг с другом. Надо сказать, что компьютер честный и не знает местоположения ваших кораблей, но выигрывает неплохо. Насчет игры друг Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com1tag:blogger.com,1999:blog-8600514341152508102.post-75475953323920264262014-11-30T09:51:00.002+05:002014-11-30T09:51:33.227+05:00Программа для выбора цвета Color Picker на AIR
Когда-то давно я сделал на Flash-е программу для подбора цвета. Потом даже не поленился её переписать с ActionScript 2 на ActionScript 3. И вот, наконец-то, я сделал то, что запланировал еще тогда: собрал эту программу для desktop под AIR. Сделал это по двум причинам: работающая во флеш-плейере она выглядит не эстетично и сборка под AIR добавляет возможностей, которых у Flash Player попросту Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com2tag:blogger.com,1999:blog-8600514341152508102.post-42635529342511914062014-11-29T15:25:00.002+05:002014-11-29T15:26:45.576+05:00Способы упаковки приложений AIR для desktopЗамечательная технология AIR от Adobe позволяет собирать приложения под многие платформы (Windows, Linux, MacOS, Android, iOS и пр.). Это открывает действительно широкие возможности для дистрибуции программ. Но даже под desktop можно собрать приложение не одним способом.
В общем случае, способа сборки приложения для desktop три:
В файл .air. Упаковывается программа со всеми своими ресурсами. ДляИванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com4tag:blogger.com,1999:blog-8600514341152508102.post-16523653613735790612014-11-04T18:28:00.001+05:002014-11-04T18:28:21.806+05:00Модуль выявления и обработки русской ненормативной лексики на PythonВообще, пресечь мат (ненормативную лексику) в данных, поступающих от пользователя и никак не модерируемых — задача сложная и вряд ли решаемая. Пользователь для достижения цели (написания мата) может использовать как богатые возможности русского языка для словообразования, так и различные уловки: вставка каких-то символов между буквами, замена букв на похожие. Даже описать весь спектр Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com2tag:blogger.com,1999:blog-8600514341152508102.post-8379233126547178002014-09-19T14:25:00.001+06:002014-09-19T14:40:46.520+06:00Выполнение задачи точно один раз в CeleryПри количестве используемых веркеров больше одного, задача может отработать несколько раз. Порой такое поведение не нужно. И для такого случая Celery даже предлагает решение.
Почему-то подумалось, что декоратор метода класса будет удобней.
# -*- coding: utf-8 -*-
from django.core.cache import caches
cache = caches['persistent']
EXPIRE_TIME = 60 * 10
CACHE_KEY_TMPL = 'celery_task_lock_%s'
def Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-9972658041663212722014-09-05T21:44:00.001+06:002018-01-19T16:25:45.788+05:00Основы Celery для Django
При создании некоторых web-приложений порой требуется выполнять задачи асинхронно запросу пользователя или периодически.
К первым можно, например, отнести отправку уведомлений по электронной почте. В этом случае невозможно гарантировать быструю обработку запроса. Поэтому отправку уведомления можно поместить в параллельный поток и запрос не будет зависеть от скорости этой самой отправки.
Ко Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com2tag:blogger.com,1999:blog-8600514341152508102.post-24479993792511912872014-08-16T00:48:00.002+06:002014-08-16T00:54:30.425+06:00Пример интеграции рендерера pixi.js с Box2DJS
Интеграция физического движка Box2DJS с рендерерами совсем не сложна. Для примера можно взять популярный pixi.js.
Для начала создадим мир Box2d
// определяем ограничительный прямоугольник мира
var worldAABB = new b2AABB();
worldAABB.minVertex.Set(-1000, -1000);
worldAABB.maxVertex.Set(1000, 1000);
// определяем гравитацию
var gravity = new b2Vec2(0, 300);
// разрешаем телам быть в покое
var Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com2tag:blogger.com,1999:blog-8600514341152508102.post-91401761811888069642014-08-14T21:54:00.000+06:002014-08-14T22:34:54.823+06:00Форк от портированной версии Box2d.js
левая кнопка мыши - таскать динамические тела
→ - следующий пример
← - предыдущий пример
R - сброс примера
S - создать сверху квадрат
C - создать сверху круг
Знакомиться с библиотекой эмуляции физики твердых тел Box2D (в оригинале написанной на C++) начал еще с версии для Flash. Но пути IT индустрии складываются так, что Flash стремительно сдает свои позиции. Поэтому решил переметнуться в этойИванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com2tag:blogger.com,1999:blog-8600514341152508102.post-33082616005991998842014-08-02T19:45:00.001+06:002014-08-02T19:45:38.642+06:00Основы физики библиотеки Box2DКратенько. Для понимания в общих чертах. Движок состоит из мира. Этот мир имеет некоторые настройки для управления эмуляцией поведения абсолютно твердых тел, которыми наполнен.
Тела могут быть любой формы. Параллелепипеды, окружности, полигоны, составные.
Тела могут быть статические - абсолютно неподвижные, тем не менее обладающие свойствами трения и упругости (friction, restitution).
Тела могут Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-83531322885300724192014-06-03T10:45:00.002+06:002014-06-03T10:47:10.483+06:00Thumbnailer на PHPХотелось лаконичного по коду, но, тем не менее, хорошо расширяемого тумбнейлера с возможностями уменьшения как вписывая в размеры, так и подрезая края. Взял PHP Gregphoto_Image за основу. Хотя, именно логику изменения размеров пришлось переписать.
Репозиторий.
Примеры использования подходят из исходной библиотеки за исключением констант FIT_WIDTH, FIT_HEIGHT, CROP_FIT, EXACT вместо MAX_WIDTH, Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-75200712103901540372014-04-23T15:41:00.002+06:002014-04-23T15:42:12.209+06:00Перестал работать javascript в FirefoxВ один момент перестал работать js на определенном домене на ограниченном подмножестве страниц, вроде бы никак не связанных. В виртуальной машине в той же версии FF, правда под другой ОС (WinXP), js работал. У других пользователей на их машинах - работал. К сожалению, адрес домена здесь дать не смогу, потому как это песочница и извне не видна.
В панели скриптов firebug'а было написано что-то типаИванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com4tag:blogger.com,1999:blog-8600514341152508102.post-16586361830272449932014-01-02T21:26:00.001+06:002015-01-01T18:14:03.553+05:00HTML-версия игры Пятнашки
Третья версия игры Пятнашки. Первая и вторая были на Flash (на ActionScript 2, затем на ActionScript 3).
Игра стала клиент-серверной - добавил в игру общие результаты. Также пользователь Maxim Frolov написал специально для этой игры музыку - спасибо ему большое за это!
Надеюсь, больше у меня не возникнет желания переписывать эту игру. :)
Подробнее.Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-62379054078272267462013-09-20T17:01:00.004+06:002013-09-20T17:02:34.662+06:00Добавляем некоторые "плюшки" в FeinCMSВ предыдущей моей статье было описано как интегрировать FeinCMS в Django с минимальной функциональностью. Теперь давайте разберемся как несколько расширить возможности системы за счет использования "батареек" FeinCMS.
Расширения FeinCMS
Первое, что хотелось бы отметить, это расширения самой модели Page - модули расширения. В комплекте идет changedate, ct_tracker, datepublisher, excerpt, featured,Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-55912439732016491292013-09-18T17:55:00.001+06:002013-09-18T17:55:18.613+06:00"Готовим" FeinCMSFeinCMS - это, как очевидно из названия, система управления содержимым сайта на базе фреймверка Django. Очень простая и очень удобная с точки зрения разработчика Django. Не перегруженная "батарейками в комплекте". Здесь я приведу минимальные действия для использования приложения. На самом деле, возможностей у этой CMS куда больше.
Сразу стоит сказать о том, что установка этой CMS - не N кликов Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-42057150763893944962013-08-17T15:42:00.001+06:002013-08-17T15:42:03.696+06:00Обновление компоненты GUI SimpleTable до версии 0.7Обновление компоненты GUI SimpleTable до версии 0.7.
Оптимизирована перерисовка талицы при использовании метода setStyle. Подробности - в документации.
Компонент бесплатен. Загрузить его можно здесь. Документация для версии 0.7 здесь.Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0tag:blogger.com,1999:blog-8600514341152508102.post-7361137544458671182013-07-25T09:53:00.002+06:002013-07-25T09:53:49.903+06:00Обработчик данных сервиса Gismeteo на PythonВытащил из прошлого код для обработки XML данных сервиса, предоставляющего прогноз погоды сайта gismeteo.ru. Немного "причесал" его, оформил и выложил на githab. Также есть на pypi.
Модуль формирует данные в красивые строки.Иванhttp://www.blogger.com/profile/02405013784177629674noreply@blogger.com0