Главная
Фреймворк для создания сервисов
- Информация о материале
- Автор: gdever
- Категория: Веб сервисы
- Просмотров: 9989
Настало время выложить фреймворк в открытый доступ. примеры будут чуть позже, а пока референсы.
Обновление библиотеки для деплоя builder.py
- Информация о материале
- Автор: gdever
- Категория: Создание ПО
- Просмотров: 5455
Некоторое время назад я уже писал про эту библиотеку. Но с тех пор мои потребности видоизменились, поэтому появился новый функционал, о котором надо бы рассказать. Собственно чем в этой статье и будем заниматься.
Репозиторий: https://gitlab.com/aeon.org/builder
Установка:
Просто скачайте builder.py и укажите путь до файла в PYTHONPATH. И всё )
Первый скрипт деплоя
Создайте файл deploy.json и заполните его следующим содержимым:
{
"deploy" : {
"host" : "your-ftp-host" , "user" : "your-ftp-user" ,
"password" : "your-ftp-password" , "path" : "path-on-your-ftp-server"
} ,
"order" : [
{ "step" : "deploy" , "type" : "ftp" }
]
}
Затем создайте скрипт deploy.py, содержащий следующий код:
import builder
builder.run()
И когда вы запустите этот скрипт, он скопирует всё содержимое из папки, в которой он был запущен на сервер.
При этом есть возможность деплоить сразу на несколько серверов:
{
"deploy1" : {
"host" : "your-ftp-host-1" , "user" : "your-ftp-user-1" ,
"password" : "your-ftp-password-1" , "path" : "path-on-your-ftp-server-1"
} ,
"deploy2" : {
"host" : "your-ftp-host-2" , "user" : "your-ftp-user-2" ,
"password" : "your-ftp-password-2" , "path" : "path-on-your-ftp-server-2"
} ,
"order" : [
{ "step" : "deploy1" , "type" : "ftp" } ,
{ "step" : "deploy2" , "type" : "ftp" }
]
}
Конфиг из примера выше говорит билдеру, что надо деплоить содержимое директории сразу на два сервера.
Запуск тестов
Билдер может запускать юнит-тесты, написанные на PHPUnit. Чтобы запустить их, добавьте в конфиг test.json:
{
"tests": [
"--filter PlugServiceTest ./tests"
]
}
Затем создайте test.py с тем же содержимым, что deploy.py из предыдущего примера. Затем запустите test.py и расслабьтесь )
Больше документации вы найдёте здесь: https://gitlab.com/aeon.org/builder/wikis/builder.py-home
Если у вас есть вопросы, то вы можете связаться со мной по почте
Или создать тикет здесь - https://gitlab.com/aeon.org/builder/issues
Отличия японских иероглифов от китайских
- Информация о материале
- Автор: gdever
- Категория: Лирика
- Просмотров: 47246
В силу ряда исторических причин, получилось так что корейцы заимствовали письменность у китайцев, а японцы уже заимствовали её у корейцев. Ну и далее эти три письменности развивались параллельно и как правило достаточно изолировано, что привело к тому что идентичные поначалу иероглифы стали немного видоизменяться со временем либо ради упрощения, либо ради изменения своего смысла, либо после реформ языка. Однако такие изменения могут назвать лишь профессиональные лингвисты.
Что же под силу понять даже простому человеку, так это наличие специальных символов в письменности, по которым можно понять что за язык перед вами - японский или китайский. Правила весьма незатейливые:
1. если вы видите над некоторыми иероглифами кружочек или две параллельные чёрточки, то это скорее всего японский. Данные символы называются нигори и ханигори и используются для формирования дополнительных рядов в японской слоговой азбуке, но о ней см. следующие пункты;
2. если в письменности присутствует большое количество относительно простых иероглифов, состоящих из пары тройки чёрточек и по форме являющиеся достаточно округлыми, то это хирагана (одна из двух японских слоговых азбук), которая используется для обозначения суффиксов, аффиксов, падежей, показателей времени и прочего. Если вы видите такое перед собой, то перед вами японские иероглифы;
3. если в письменность присутствует большое количество простых и угловатых иероглифов, то это скорее всего уже вторая слоговая азбука - катакана. Она используется для написания заимствованных иностранных слов и телеграмм.
Скрипт деплоя
- Информация о материале
- Автор: gdever
- Категория: Веб сервисы
- Просмотров: 8707
Понадобилось мне не так давно сделать себе скрипт деплоя исходников на сервер. Делать было особо нечего да и давно уже хотелось снова к Питону припасть. В общем было решено что самодельному скрипту быть. Код удалось написать на удивление быстро. Всего за вечер был готов простенький MVP, который позднее начал обрастать всё новыми и новыми фичами всё более и более покрывая мои потребности в простом деплое одной кнопкой.
Скрипт деплоя представляет из себя набор функций, которые дергаются в необходимом порядке.
Например, можно залить исходники на сервер по FTP:
move_to_ftp( Host , Login , Password , ServerPath )
Или запустить PHPUnit'овские тесты:
run_module_tests( Mode )
Или конкретный тест:
run_module_test( Mode , TestCase )
Запустить тест зависимостей на локальной или удалённой машине:
run_dependency_tests( Dependency , Mode = 'local' )
Ну и подтянуть свежих вендоров:
refresh_vendor( Vendor )
ЗЫ Как известно лучший отдых - это смена рода деятельности, поэтому рекомендую для отдохновения почитать вот эту статью про японский и китайский язык
Класс матрицы в компьютерной графике
- Информация о материале
- Автор: gdever
- Категория: DirectX 8
- Просмотров: 8027
Следующим после класса вектора у нас на очереди идёт класс матрицы. Тоже в общем-то классический кусок кода. На нём тоже не будем сильно долго останавливаться а просто посмотрим листинг.
class CMatrix4D
{
/**
* Matrix components.
*/
float a11 , a12 , a13 , a14;
float a21 , a22 , a23 , a24;
float a31 , a32 , a33 , a34;
float a41 , a42 , a43 , a44;
public:
/**
* Default constructor.
*/
CMatrix4D( void );
/**
* Set components constructor.
*/
CMatrix4D( float a11 , float a12 , float a13 , float a14 ,
float a21 , float a22 , float a23 , float a24 ,
float a31 , float a32 , float a33 , float a34 ,
float a41 , float a42 , float a43 , float a44 );
/**
* Copy constructor.
*/
CMatrix4D( const CMatrix4D & Matrix );
/**
* Assign operator.
*/
CMatrix4D operator=( const CMatrix4D & Matrix );
/**
* Assign method.
*/
void assign( const CMatrix4D & Matrix );
/**
* Multiplication operator.
*/
CVector4D operator*( const CVector4D & Vector );
/**
* Multiplication operator.
*/
CMatrix4D operator*( const CMatrix4D & Matrix );
};
ЗЫ если захотите немного отдохнуть от программирования, то можете почитать моё эссе про китайский и японский языки.
Страница 1 из 8