mazdik.github.io on GitHub

# mazdik.github.io

ng-crud-table on GitHub

# Angular 5 CRUD table using REST backend

Simple CRUD table component for Angular using REST backend. (<a target="_blank" href="https://mazdik.github.io/ng-crud-table/">Demo</a>)  
The module contains services for: Yii2 RESTful (php) API, ORDS (Oracle REST Data Services), Flask-Restless (python)

### Sample
```typescript
import {Component}  from '@angular/core';
import {Column, Settings, DataSource, YiiService} from '../ng-crud-table';
import {HttpClient} from '@angular/common/http';


@Component({
  selector: 'my-app',
  template: `<app-crud-table [columns]="columns" [settings]="settings" [service]="service"></app-crud-table>`
})

export class PlayersComponent {
  
    public service: DataSource;
  
    constructor(private http: HttpClient) {
      // YiiService | RestlessService | OrdsService | your custom service
      this.service = new YiiService(this.http);
    }

    public columns: Column[] = [
        {
            title: 'Id', 
            name: 'id', 
            sortable: true, 
            filter: true, 
            frozen: true,
            resizeable: false,
            formHidden: true,
        },
        {
            title: 'Name', 
            name: 'name', 
            sortable: true, 
            filter: true, 
            frozen: true, 
            width: 250,
            validation: { required: true, pattern: '^[a-zA-Z ]+$' },
            editable: true,
            resizeable: false,
        },
        {
            title: 'Race',
            name: 'race',
            sortable: true,
            filter: true,
            type: 'select',
            options: [
                { id: 'ASMODIANS', name: 'ASMODIANS' },
                { id: 'ELYOS', name: 'ELYOS' },
            ],
            editable: true,
        },
        {
            title: 'Cascading Select',
            name: 'note',
            editable: true,
            type: 'select',
            options: [
                { id: 'ASM1', name: 'ASM note 1', parentId: 'ASMODIANS' },
                { id: 'ASM2', name: 'ASM note 2', parentId: 'ASMODIANS' },
                { id: 'ASM3', name: 'ASM note 3', parentId: 'ASMODIANS' },
                { id: 'ASM4', name: 'ASM note 4', parentId: 'ASMODIANS' },
                { id: 'ELY1', name: 'ELY note 1', parentId: 'ELYOS' },
                { id: 'ELY2', name: 'ELY note 2', parentId: 'ELYOS' },
                { id: 'ELY3', name: 'ELY note 3', parentId: 'ELYOS' },
            ],
            dependsColumn: 'race',
            selectionLimit: 5,
        },
        {
            title: 'Gender',
            name: 'gender',
            sortable: true,
            filter: true,
            type: 'radio',
            options: [
                { id: 'MALE', name: 'MALE' },
                { id: 'FEMALE', name: 'FEMALE' },
            ],
            editable: true,
        },
        {
            title: 'Exp',
            name: 'exp',
            sortable: true,
            filter: true,
            type: 'number',
            validation: { required: true, minLength: 2, maxLength: 10 },
            editable: true,
        },
        {
            title: 'Last online', 
            name: 'last_online', 
            sortable: true, 
            filter: true,
            type: 'date',
            editable: true,
        },
        {
          title: 'Account name',
          name: 'account_name',
          editable: true,
          type: 'select-popup',
          optionsUrl: 'assets/accounts.json',
          keyColumn: 'account_id',
        },
        {
          title: 'Account id',
          name: 'account_id',
          formHidden: true,
          tableHidden: true,
        }
    ];

    public settings: Settings = {
        api: 'http://host3/players',
        crud: true,
        primaryKeys: ['id'],
        tableWidth: 820,
        scrollHeight: 380,
        multipleSort: true,
        messages: {
          titleDetailView: 'Player details',
          titleCreate: 'Create a new player'
        }
    };
}
```

## Features
* Filtering
* Sorting (Multiple columns)
* Pagination
* Modal (Draggable and Resizable)
* Create/Update/Delete (composite primary keys)
* Single row view
* Loading indicator
* MultiSelect
* Scrolling with fixed header horizontally and vertically
* Frozen columns
* Dynamic forms with validation
* Editable
* Localization
* Column Resizing
* Cascading Select (DropDown)
* Tree table
* No external dependencies

### Custom service
```typescript
interface DataSource {
  url: string;
  primaryKeys: string[];
  getItems(page: number, filters?: Filter, sortMeta?: SortMeta[]): Promise<any>;
  getItem(row: any): Promise<any>;
  post(row: any): Promise<any>;
  put(row: any): Promise<any>;
  delete(row: any): Promise<any>;
  getOptions?(url: string, parentId: any): Promise<any>;
}
```

ng-modal on GitHub

# Angular 5 Resizable and draggable Modal

Simple Resizable and draggable modal component.
 (<a target="_blank" href="https://mazdik.github.io/ng-modal/">Demo</a>) 

### Sample
```typescript
import {Component} from '@angular/core';

@Component({
  selector: 'app-modal-demo',
  template: `
    <button type="button" class="button" (click)="modalRoot.show()">Open modal</button>
    <app-modal #modalRoot
               [modalTitle]="'Demo modal'"
               [width]="500"
               [zIndex]="1100"
               [autoZIndex]="false"
               (close)="onCloseModal()">
      <ng-container class="app-modal-body">
        <h3>MODAL DIALOG</h3>
        <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.
          Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s.</p>
      </ng-container>
      <ng-container class="app-modal-footer">
        <button type="button" class="button button3" (click)="modalRoot.hide()">Delete</button>
        <button type="button" class="button button1" (click)="modalRoot.hide()">Save</button>
        <button type="button" class="button button2" style="float: right;" (click)="modalRoot.hide()">Close</button>
      </ng-container>
    </app-modal>
  `
})
export class ModalDemoComponent {

  onCloseModal() {
  }

}
```

aion-web on GitHub

# Aion web

### Quick start

npm install -g @angular/cli

npm install

ng serve

go to [http://localhost:4200](http://localhost:4200) in your browser

```bash
# production
ng build --prod
```

ng-tree on GitHub

# Angular 5 Tree

Simple tree component with lazy loading, client/server side filtering, context menu.
 (<a target="_blank" href="https://mazdik.github.io/ng-tree/">Demo</a>) 

### Sample
```typescript
import {Component, OnInit} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {ITreeNode, ITreeService, MenuItem} from '../ng-tree';
import {TreeDemoService} from './tree-demo.service';

@Component({
  selector: 'app-tree-filter-demo',
  template: `
    <app-tree-view
      [service]="treeService"
      [selectedNode]="selectedNode"
      (selectedChanged)="onSelectNode($event)"
      [serverSideFiltering]="true"
      [contextMenu]="contextMenu">
    </app-tree-view>
    <app-context-menu #contextMenu [items]="items"></app-context-menu>
  `
})
export class TreeFilterDemoComponent implements OnInit {

  public treeService: ITreeService;
  public selectedNode: ITreeNode;
  public items: MenuItem[];

  constructor(private http: HttpClient) {
    this.treeService = new TreeDemoService(this.http);
  }

  ngOnInit() {
    this.items = [
      {label: 'View Task', command: (event) => console.log(this.selectedNode)},
      {label: 'Edit Task', command: (event) => console.log(event)},
      {label: 'Delete Task', command: (event) => console.log(event), disabled: true}
    ];
  }

  onSelectNode(node: ITreeNode) {
    this.selectedNode = node;
    console.log(node);
  }

}
```

### Custom service
```typescript
interface ITreeService {
  url: string;
  getNodes(node?: ITreeNode): Promise<ITreeNode[]>;
  searchNodes(name: string): Promise<any>;
}
```

QMDBOv2 on GitHub

QMDBO
=============
Программа для выполнения запросов к множеству баз данных Oracle
<br>
Program to query multiple databases Oracle
<br><br>
C# NET Framework 4.5.1
<br>
EntityFramework 6.1.2
<br>
System.Data.SQLite 1.0.94.1
<br>
System.Data.SQLite.Core 1.0.94.0
<br>
System.Data.SQLite.EF6 1.0.94.0
<br>
System.Data.SQLite.Linq 1.0.94.1
<br>
Oracle Data Access Components (ODAC) for Windows

ok_share on GitHub

# ok_share

## Quick start
```bash
git clone https://github.com/mazdik/ok_share.git
cd ok_share
npm install
# Поменять настройки в файле settings.json
node ok.js
```

## Node.js
Download and install [Node.js](https://nodejs.org)

## PhantomJS
Download and install [PhantomJS](http://phantomjs.org/)

## Пример установки на CentOS 7
```bash
yum install fontconfig freetype freetype-devel fontconfig-devel libstdc++
yum install gcc-c++ make
yum -y install bzip2
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
yum -y install nodejs
yum install git
npm install phantomjs -g
```

## Пример установки на Linux Mint
```bash
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
sudo apt install git
sudo npm install phantomjs -g
```

## Пример установки на Debian 7
```bash
sudo apt-get install -y build-essential
wget https://nodejs.org/dist/v7.6.0/node-v7.6.0-linux-x64.tar.xz
cd /usr/local
tar --strip-components 1 -xJf node-v7.6.0-linux-x64.tar.xz
sudo apt-get install git
sudo npm install phantomjs -g
```

## Проверки
```bash
npm -v
node -v
phantomjs -v
convert -version
git --version
```

rent on GitHub

# rent

### Быстрый старт
```bash
git clone https://github.com/mazdik/rent.git
cd rent
npm install
cp settings-example.json settings.json
# Поменять настройки в файле settings.json
node rent.js
```

### Обновить
```bash
git pull origin
```
### Обновить пакеты
```bash
rm -rf node_modules
npm install 
```

### Node.js
Download and install [Node.js](https://nodejs.org)

### ImageMagick
Download and install [ImageMagick](http://www.imagemagick.org/)

### PhantomJS
Download and install [PhantomJS](http://phantomjs.org/)

### Пример установки на CentOS 7
```bash
yum install fontconfig freetype freetype-devel fontconfig-devel libstdc++
yum install gcc-c++ make
yum -y install bzip2
curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -
yum -y install nodejs
yum install ImageMagick*
yum install git
npm install phantomjs -g
```

### Пример установки на Linux Mint
```bash
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential
sudo apt install ImageMagick*
sudo apt install git
sudo npm install phantomjs -g
```

### Пример установки на Debian 7
```bash
sudo apt-get install -y build-essential
wget https://nodejs.org/dist/v7.6.0/node-v7.6.0-linux-x64.tar.xz
cd /usr/local
tar --strip-components 1 -xJf node-v7.6.0-linux-x64.tar.xz
sudo apt-get install ImageMagick*
sudo apt-get install git
sudo npm install phantomjs -g
```

### Проверки
```bash
npm -v
node -v
phantomjs -v
convert -version
git --version
```

### Настройки (settings.json)
"db_host":	хост бд  
"db_user":	имя бд  
"db_password":	пользователь бд  
"db_database":	пароль бд  
"db_connlimit":	максимальное количество подключений к бд  
"city":	город  
"category":	категория (kvartiry - квартиры, komnaty - комнаты, doma_dachi_kottedzhi - дома)  
"oper":	тип объявления (sdam - сдам, prodam - продам)  
"object_type":	срок аренды (na_dlitelnyy_srok/posutochno) или Вид объекта для продажи (novostroyka/vtorichka)  
"limit_images":	максимальное количество фотографий  
"limit_pages":	максимальное количество страниц, на 1 старнице 50 объявлений  
"pmin":	цена от  
"pmax":	цена до   
"with_images":	только с фото (1 - да, 0 - все)  
"query":	слова для поиска по объявлениям  
"exclude":	слова исключения (через запятую)  
"commission":	1 - без комиссии  
"proxy":	адрес:порт от прокси  
"proxyuserpwd":	пользователь:пароль от прокси  
"user":	0 - Все, 1 - Частные, 2 - Агентства  
"crop":	обрезка фото в процентах, оставлять 91% сверху и удалить 9% снизу  
"post_status":	1 - Опубликовано, 2 - Черновик, 3 - Архив  
"post_user":	id пользователя  
"account_username":	ваш логин от авито  
"account_password":	ваш пароль от авито  
"images_dir":	полный путь к директории фотографий сайта  
"watermark":	полный путь на водяной знак  
"sleep_delay":	задержка в милисекундах  
"chrome":	браузер (1 - вкл, 0 - выкл)  
"firefox":	браузер (1 - вкл, 0 - выкл)  
"phantomjs":	браузер (1 - вкл, 0 - выкл)  

my-blog on GitHub

my-blog
============================

Блог из файлов заметок синхронизирующихся по dropbox на Flask. <a target="_blank" href="http://mazdik.ru">mazdik.ru</a>


### Install

~~~
python3.6 -m venv venv
source venv/bin/activate
pip3.6 install -r requirements.txt
~~~

plsql-xlsx on GitHub

# PLSQL-XLSX
Create an Excel-file with PL/SQL using the XLSX files as templates

### Install
create table REPORT_TEMPLATE  
install packages:  
AS_XLSX  
AS_ZIP  
PKG_XLSX_HELPER  

### Sample
```sql
declare 
bBLOB blob;
begin
  /* create header */	
  PKG_XLSX_HELPER.CREATE_REPORT_TEMPLATE(2, 1);
  /* ... */
  :bBLOB := AS_XLSX.FINISH;
end;
```

yii-aion on GitHub

Yii Aion RESTful API
============================

### Install via Composer

If you do not have [Composer](http://getcomposer.org/), you may install it by following the instructions
at [getcomposer.org](http://getcomposer.org/doc/00-intro.md#installation-nix).

You can then install this project template using the following command:

~~~
php composer.phar global require "fxp/composer-asset-plugin:~1.1.1"
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic
~~~

Now you should be able to access the application through the following URL, assuming `basic` is the directory
directly under the Web root.

~~~
http://localhost/basic/web/
~~~


CONFIGURATION
-------------

### Database

Edit the file `config/db.php` with real data, for example:

```php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=aion',
    'username' => 'root',
    'password' => '1234',
    'charset' => 'utf8',
];
```

badoo_bot on GitHub

# Badoo like bot

## Quick start
```bash
git clone https://github.com/mazdik/badoo_bot.git
cd badoo_bot
npm install
mongod --config mongod.conf
# edit user-specific variables in settings.json
node badoo_bot.js
```

## Web
```bash
cd server
npm install
set DEBUG=server:* & npm start
http://localhost:3000/
```

## Credits
- [Node.js](https://nodejs.org)
- [MongoDB](https://www.mongodb.org/downloads#production)
- [Angular.js](https://angularjs.org)

apex-dba-stat on GitHub

# DBA_STAT

##О программе
DBA STAT веб приложение на основе APEX для сбора статистики по базам Oracle

##Необходимые привилегии
````
grant CREATE DATABASE LINK to TEST;
grant CREATE PUBLIC DATABASE LINK to TEST;
grant DROP PUBLIC DATABASE LINK to TEST;
grant select on V_$DBLINK to TEST;
grant select on DBA_DB_LINKS to TEST;
grant select on V_$SESSION to TEST;
grant ALTER SYSTEM to TEST;
grant execute on DBMS_LOCK to TEST;
````
##Права для удаленного пользователя:
````
grant select on v_$instance to ATEST;
grant select on v_$backup_set to ATEST;
grant select on v_$backup_piece to ATEST;
grant select on V_$ARCHIVED_LOG to ATEST;
grant select on DBA_DATA_FILES to ATEST;
grant select on V_$RECOVERY_FILE_DEST to ATEST;
grant select on v_$parameter to ATEST;
grant select on filext$ to ATEST;
grant select on dba_tablespaces to ATEST;
grant select on dba_free_space to ATEST;
grant select on v_$tempfile to ATEST;
grant select on v_$tablespace to ATEST;
grant select on v_$sort_segment to ATEST;
grant dba to ATEST;
````

##Настройки

BNAME_LOCAL — Названия брать с локальной таблицы (Default TRUE). Если FALSE — всегда будет получать название с удаленной ДБ.

BCHECK_SYSDATE — Обновление с проверкой даты (Default TRUE). FALSE — не проверять дату, будет всегда обновлять данные.

SQL_SERVER_NAME — Запрос получения названия бд. После каждой таблицы дописывать $$$ для подстановки dblink.

Например: SELECT short_name FROM table$$$

DYN_PROCEDURE — название процедуры для динамического вызова. Длина 30 символов. Обязательный входной параметр — имя ссылки. В значении настройки указать без входного параметра. Например можно указать существующую процедуру P_TOTAL_SYNC.

DYN_PROCESSES — название процедуры для динамического процесса. Длина 30 символов. Аналогична DYN_PROСEDURE, но работает с кнопки  «Dyn processes» в разделе «Statistics tsolletstion».

EMAIL_FROM - Email отправителя отчета (1 адрес)

например: ADMIN@SERVER.COM

EMAIL_TO - Email получателей отчета (много адресов через запятую)

например: USER1@SERVER.COM, USER2@SERVER.COM

THREAD — Количество потоков для задания. Максимальное количество зависит от параметра job_queue_processes

ONLY_DYN_PROCEDURE — Выполнять в планировщике только пользовательскую процедуру.

##Планировщик

Процедуру RAD_PKG_TOTAL.P_START_ALL для сбора данных по всем серверам можно добавить в планировщик oracle.

Принудительное завершение задачи

rad_pkg_total.p_kill_job(‘название задачи’);

Отправка отчета xlsx по email

RAD_PKG_TOTAL.P_SEND_REPORT_VIA_EMAIL; (можно добавить в планировщик oracle)

Настройки SMTP -> войти под ADMIN -> Workspace: INTERNAL

Instance Settings -> Email

##Отчеты Excel

Добавлен пакет AS_XLSX  (technology.amis.nl/2011/02/19/create-an-excel-file-with-plsql)

Возможность создания и скачивания отчета в формате xlsx (Excel 2007)

Для создания отчетов xlsx (Excel 2007) используется пакет AS_XLSX.

Отчет можно редактировать в функции RAD_F_GET_TOTAL_REPORT.

yii-lineage on GitHub

Yii_lineage
========
Configuration
------------------------------
Yii_lineage\protected\config\

```php

	'db'=>array(
		'connectionString' => 'mysql:host=localhost;dbname=lineage_db',
		'emulatePrepare' => true,
		'username' => 'root',
		'password' => 'passowrd',
		'charset' => 'utf8',
		),
    
	'Smtpmail'=>array(
                'class'=>'application.extensions.smtpmail.PHPMailer',
                'Host'=>"smtp.mail.ru",
                'Username'=>'admin@mail',
                'Password'=>'password',
                'Mailer'=>'smtp',
                'Port'=>465,
                'SMTPAuth'=>true, 
                'SMTPSecure' => 'ssl',
        ),
      
	'params'=>array(
                'rate'=>'100',
		'change_account'=>'100',
                'adminEmail'=>'admin@mail.ru',
                'administrator'=>'login1',
                'moderator'=>'login2',
                'adminDomen'=>'site.ru',
                'exchangeCredits' => '0.1',
                'l2topID' =>'8967',
                'robokassaLogin' => '',
                'robokassaPass' => '',
                'robokassaPass2' => '',
                'testRobokassa' => 'true',
                'PasswordHash' => '', // whirlpool или sha1
	),
      
```
SQL script
------------------------------
Execute SQL script files in Yii_lineage\protected\data


robokassa
------------------------------
Result URL
http://domen.ru/index.php/pay/result

Success URL
http://domen.ru/index.php/pay/success

Fail URL
http://domen.ru/index.php/pay/fail

Метод отсылки данных по Result URL
POST

Yii 1.1.16 
------------------------------
You can download it at http://www.yiiframework.com/download/

Links
------------------------------
Author http://mazdik.ru/

ufa-raphael-map on GitHub

# Карта Уфы на RaphaelJS

demo: http://ufabp.ru

OracExpLob on GitHub

OracExpLob
==========
Утилита для выгрузки BLOB файла из базы Oracle (например отчета, который создается при помощи as_xlsx) и отправки его по email SSL. Вызывается оракловая процедура, в котором выходной параметр возвращает BLOB. Для автоматической выгрузки и рассылки выполняется планировщиком или nnCron.
<br><br>
C# NET Framework 4.0
<br> 
Oracle Data Access Components (ODAC) for Windows
<br> 
<br>
Настройки OracExpLob.exe.config

```xml
    <!-- Название файла отчета -->
    <add key="reportFileName" value="report.xlsx" />
    <!-- Почтовый сервер smtp -->
    <add key="smtpServer" value="gmail.com" />
    <!-- Отправитель-логин -->
    <add key="from" value="from@gmail.com" />
    <!-- Пароль -->
    <add key="password" value="password"/>
    <!-- Получатели, например address1@example.com;address2@example.com	 -->
    <add key="mailto" value="mailto@gmail.com"/>
    <!-- Тема письма -->
    <add key="caption" value="Тема письма"/>
    <!-- Сообщение -->
    <add key="message" value="Сообщение"/>
    <!-- Имя базы данных из tnsnames.ora -->
    <add key="oracleDataSource" value="DATABASENAME" />
    <!-- Пользователь Oracle -->
    <add key="oracleUser" value="user" />
    <!-- Пароль Oracle -->
    <add key="oraclePassword" value="password" />
    <!-- Название процедуры -->
    <add key="oracleProcedurename" value="p_r_report" />
    <!-- Выходной параметр процедуры -->
    <add key="oracleOutBlobParam" value="bblob" />

QMDBO on GitHub

QMDBO
=============
Программа для выполнения запросов к множеству баз данных Oracle
<br>
Program to query multiple databases Oracle
<br><br>
C# NET Framework 3.5
<br>
Oracle Data Access Components (ODAC) for Windows