Перейти до основного вмісту

Публікації

Показано дописи з 2022

Встановлення Node.js

Для роботи з багатьма фронт-енд фреймворками має бути встановлений Node.js та менеджер пакетів npm. Node.js — це кросплатформне середовище виконання JavaScript із відкритим вихідним кодом, яке виконує JS-код за межами веб-браузера. Node.js дозволяє розробникам використовувати JavaScript для написання інструментів командного рядка та для сценаріїв на стороні сервера — запуск сценаріїв на стороні сервера для створення динамічного вмісту веб-сторінки, перш ніж сторінка буде відправлена у веб-браузер користувача. npm (Node Package Manager) — менеджер пакетів за замовчуванням для Node.js. Він складається з клієнта командного рядка, який також називається npm, і онлайнової бази даних загальнодоступних і платних приватних пакетів. npm включає також npx (Node Package Execute) . npx дозволяє просто виконувати встановлені пакети. На сайті https://nodejs.org/uk/download/ потрібно завантажити одну із останніх версій. Як правило, пропонується інсталяція двох версій: останньої та LST. Для ко...

Знайомство з фреймворком Quarkus

Quarkus Quarkus - реактивний java-фреймворк, який підтримує GraalVM. Розглянемо створення стартового застосунку на Quarkus в операційній системі Ubuntu (для інших версій Linux команди будуть такими ж, для Windows можуть бути невеликі відмінності). Підготовка На машині має бути встановлений Maven. Перевірити це можна за допомогою команди: mvn --version Встановити Maven можна, використавши наступну команду: sudo apt install maven Створення стартового проєкту В потрібній директорії запустити в командному рядку код: mvn io.quarkus.platform:quarkus-maven-plugin:2.11.2.Final:create \ -DprojectGroupId=org.acme \ -DprojectArtifactId=getting-started \ -Dextensions="resteasy-reactive" cd getting-started Буде створений стартовий проєкт. Цеq проєкт можна відкрити за домогою улюбленого IDE. Не рахуючи тестів, у цьому проєкті є лише один java-клас: package org.acme; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs...

Патерн Builder в Java

Проблема У нас є клас, який містить велику кількість полів. Частина із цих полів є обов'язковими, а частина ні. Потрібно створити "інструменти" для створення екземплярів цього класу. Приклад. У нас є клас Користувач (User), який містить 3 обов'язкових поля: Ім'я, Прізвище, ЕлектроннаПошта та ряд неов'язкових. public class User { private String firstName; private String lastName; private String email; private String middleName;//optional private int age;//optional private String address;//optional private String comment;//optional private String phone;//optional //... } Розглянемо можливі рішення Використання перевантажених конструкторів В Java є можливість створити ряд конструкторів із різним набором параметрів. public class User { private String firstName; private String lastName; private String email; private String middleName;//optional private int age;//optional private String address;//...

Базові команди для галудження в git

Створення нової гілки Припустимо, що у нас вже створений git-проєкт і ми знаходимося в гілці master . Про сторення git-проєктів більше можна почитати тут . Створити нову гілку з назвою test можна за допомогою наступної команди: git branch test Отже, тепер у нас є 2 гілки. Подивитися список гілок можна за допомогою команди git branch Ми отримаємо список гілок, а також буде відмічено поточну гілку. Якщо потрібно вивести інформацію про останній комміт в кожній із гілок, то можна зробити так: git branch -v Ще один спосіб створення нової гілки - це створення за допомогою команди checkout з параметром -b. При цьому створюється нова гілка та відбувається перехід до неї: git checkout -b new-test Перехід до іншої гілки Перехід до іншої гілки можна зробити за допогою команди git checkout test Відповідно повернутися назад: git checkout master Відмінності між гілками В процесі розробки комміти можуть додаватися до кожної з гілок (зрозуміло, що гілок може бути більше). Часто пот...

Mongod

Mongod – основний демон-процес (deamon process) в системі MongoDB. Основні параметри команди. Виведення довідкового матеріалу: mongod --help або mongod -h Версія mongod: mongod --version Зміна директорії, де зберігаються файли з даними: mongod --dbpath directory_path По замовчуванню всі дані зберігаються в папці /data/db. За допомогою цього параметра команди mongod можна задати інше місце. Directory path визначає нову папку. Зміна номера порта mongod --port port_number По замовчуванню процес запускається на порту з номером 27017. Запуском команди із цим параметром можна визначити інший порт. Включення обов’язкової автентифікації: mongod –auth Встановлення допустимих IP адрес. mongod --bind_ip localhost,111.111.111.111 Включення підтримки  IPv6 mongod –-ipv6 По замовчуванню підтримка адресації ipv6 відключена. Цей параметр дозволяє включити її. Запуск сервера: mongo Зупинка: use admin db.shutdownServer() exit

The Twelve-Factor App

12-факторні застосунки 12-факторні застосунки - це методологія розробки web-застосунків. Застосовується для різних мов програмування. Власне, самі 12 факторів : I. Кодова база Одна кодова база, що відслідковується в системі контролю версій та має багато розгортань II. Залежності Явно оголошуйте та ізолюйте залежності III. Конфігурація Зберігайте конфігурацію в середовищі виконання IV. Сторонні служби Вважайте сторонні служби (backing services) підключеними ресурсами V. Збірка, реліз, виконання Суворо відокремлюйте етапи збірки та виконання VI. Процеси Запускайте застосунок як один або декілька процесів без збереження внутрішньго стану (stateless) VII. Прив’язка портів Експортуйте сервіси за допомогою прив’язки портів (port binding) VIII. Конкурентність Масштабуйте застосунок за допомогою процесів IX. Утилізовуваність Підвищуйте надійність за допомогою швидкого запуску і коректного вимкнення X. Dev/prod паритет Прагніть максимальної ідентичності development, staging...

Оператор CNOT в квантовому програмуванні

CNOT Оператор (вентиль, гейт) CNOT приймає 2 входи і 2 виходи. Цей вентиль називають контрольованим запереченням (Controlled NOT). CNOT інвертує другий (керований) кубіт тільки, якщо на перший (керуючий) кубіт подано 1: До Після Керуючий кубіт Керований кубіт Керуючий кубіт Керований кубіт 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 Робота оператора схожа на оператор XOR, якщо не враховувати перший біт на виході: XOR Вхід 1 Вхід 2 Виіхід 0 0 0 0 1 1 1 0 1 1 1 0 Приклад реалізації в Strange Program program = new Program(8); Step step0=new Step(); Step step1=new Step(); step0.addGate(new X(3)); step0.addGate(new X(4)); step0.addGate(new X(6)); step0.addGate(new X(7)); step1.addGate(new Cnot(0,1)); step1.addGate(new Cnot(2,3)); step1.addGate(new Cnot(4,5)); step1.addGate(new Cnot(6,7)); program.addStep(step0); program.addStep(step1); QuantumExecutionEnvironment qee = new SimpleQuantumExecutionEnvironment(); Result result = qee.run...

Квантове програмування в Java

Strange Strange - бібліотека для емуляції квантових обчислень на Java. Бібліотека також дозволяє досить просто візуалізувати написану квантову програму за допомогою JavaFX. Підключення бібліотеки При використанні Maven це можна зробити, додавши залежність: org.redfx strange 0.1.3 Написання простої програми Приклад простої програми, код можна помістити прямо в метод main() : Program program = new Program(3); Step s0 = new Step(); s0.addGate(new X(0)); Step s1 =new Step(); s1.addGate(new Hadamard(2)); program.addStep(s0); program.addStep(s1); QuantumExecutionEnvironment qee = new SimpleQuantumExecutionEnvironment(); Result result = qee.runProgram(program); Qubit[] qubits = result.getQubits(); for (Qubit qubit:qubits){ System.out.println(qubit.measure()); } Після запуску програма має видати результат 1 0 0 або 1 0 1 Пояснення програми Створення програми, що буде оперувати 3-ма кубітами: Program program =...

Примітивні типи в JavaScript

1. Number Використовується для роботи з числами, як цілими, так і дробовими. 64-бітне число, з яких 52 біти відводиться на значення, 11 біти – на показник степеню 1 біт – на знак (+ чи -) Числа з плаваючою крапкою можуть приймати значення в діапазоні від 2^-1074 до 2^1024 (по модулю) Цілі числа можу змінюватися в діапазоні від -(2^53 − 1) to 2^53 – 1. Також є спеціальні значення +Infinity (Number.POSITIVE_INFINITY) та-Infinity (Number.NEGATIVE_INFINITY), Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER, Number.NaN. 2. BigInt Дозволяє працювати з цілими числами довільної довжини. 3. Boolean Можливі значення true та false. 4. String Рядковий тип 5. Symbol Унікальний рядковий ідентифікатор. 6. Null Має одне значення: null. 7. Undefined Має одне значення: undefined

Основи роботи з Git

Встановлення на Linux Для встановлення git на Linux через термінал, можна скористатися командою: sudo apt install git-all Перевірка версії Щоб перевірити поточну встановлену версію в терміналі можна набрати git --version Допомога Стисла довідка про команду git command -h або git command --help Наприклад: git add -h Для отримання більш повної інформації можна скористатися git help command Наприклад: git help add Ім’я користувача та електронна пошта Встановлення імені: git config --global user.name "Your Name" Встановлення email: git config --global user.email your@mail.com Якщо потрібно задати пошту та ім’я лише для одного проєкту, то потрібно використати команду без параметру —global . Для перегляду списку параметрів можна скористатися командою: git config --list Створення git-репозиторію Є 2 основних способи створення репозиторію: Створення репозиторію на сторонньому сервері і завантаження на локальну машину. Приклад створення репозиторію на Bitbacke...

Базові команди MongoDB

Основні команди для роботи з MongoDB. Shell-команди для роботи з базами даних Перегляд баз даних: show dbs; Перехід до бази або створення нової: use database-name; Виведення імені поточної бази: db.getName(); Отримання довідки: db.help(); Видалення бази даних: db.dropDatabase(); Робота з колекціями Колекція – аналог таблиці в реляційних базах даних. Документ – аналог рядка. BSON – формат бінарного представлення JSON-докменту. Створення нової колекції: db.createCollection(“name”); Перегляд колекцій: show collections; Інформація про колекцію: db.collectionName.stats(); Видалення колекції: db.collectionName.drop(); Виведення вмісту: db.collectionName.find(); або db.collectionName.find().pretty(); Робота з документами Додавання документу: db.collectionName.insert(…); Кілька документів можна додати командою: db.collectionName.insertMany(…); Кількість документів в колекції: db.collectionName.count();

Зміна повідомлення в останньому коміті

Проблема Припустимо, що зроблений коміт із повідомленням (коментарем), наприклад, за допомогою команди git commit -m 'some text' Як можна змінити текст повідомлення ? Тобто замість "some text" написати щось інше? Розглянемо випадок, коли нам потрібно змінити останній коміт, який ще не "залито" на сервер. Тобто ще НЕ виконана команда git push origin master Більше про базові команди git можна почитати тут . Розв'язаня проблеми Можна використати команду git commit --amend Після цього відкриється текстовий редактор, у якому можна буде змінити повідомлення. Потрібно враховувати, що у цьому випадку ідентифікатор коміту зміниться. Тобто такий спосіб не варто використовувати, якщо коміт вже заантажений на сервер.

Типи даних в Java

Примітивні типи В Java є 8 примітивних типів. Цілочислові типи: byte - займає 1 байт (8 біт), діапазон можливих значень -128 .. 127 short - 2 байти (16 біт), діапазон можливих значень -32678 .. 32677 int - 4 байти (32 біт), діапазон можливих значень -2147483648 .. 2147483647 long - 8 байт (64 біт), діапазон можливих значень -9223372036854775808 .. 9223372036854775807 Типи з плаваючою крапкою: float - займає 4 байт (32 біт), діапазон можливих значень -3.4Е+38 .. 3.4Е+38 double - 8 байтів (64 біт), діапазон можливих значень -1.7E+308 .. 1.7Е+308 Для роботи із символами використовується тип char . Цей тип займайє 2 байти пам'яті і дозволяє використовувати 65536 різних символів. Логічний тип boolean може приймати 2 значення: true, false. Класові типи Крім 8 примітивних типів, в Java також використовуються класові типи. Кожен клас, інтерфейс чи перелік (enum) фактично створюють новий тип даних. Кожен із класових типів успадковує тип Object. Класові...

Базові команди для роботи з Git та Bitbucket

Git Будемо вважати, що git на комп'ютері вже встановлений. Якщо ні, то його неважко завантажити та встановити. Налаштування git на вашому комп'ютері можна подивитися за допомогою команди git config --list Щоб встановити ім'я та email, за яким ваші коміти будуть ідентифікуватися в репозиторії, використовуються команди: git config --global user.name "Your Name" git config --global user.email your@mail.com Bitbucket Нам потрібний акаунт на Bitbucket . Його неважко зареєструвати, це безкоштовно. Для створення нового репозиторію потрібно вибрати команду Create Repository . Далі потрібно заповнити основну інформацію про репозиторій. Обов'язковими є лише назва проєкту та назва репозиторію: Після заповнення полів потрібно натиснути кнопку Create Repository . Клонування репозиторію на комп'ютер Для того, щоб клонувати репозиторій на свій комп'ютер, потрібно виконати наступні кроки. Отримати посилання для клонування. Для цього в репозиторії...

Способи конвертації тексту в числовий формат в JavaScript

Мова JavaScript, на відміну від Java, використовує неявну динамічну типізацію. Це може спричинити ряд проблем, які важко відстежити. Розглянемо такий приклад: var first="100"; var second="25"; var result=first-second; console.log(result); Хоча змінні first та second є текстовими, при застосування оператора віднімання вони автоматично конветуються в числовий тип (Number) і результат виконання цього коду буде очікуваним: 75. Але подивимось на такий приклад: var first="100"; var second="25"; if(first>second){ console.log("100 більше за 25"); }else{ console.log("25 більше за 100"); } Тут результат буде неочікуваний: 25 більше за 100. Чому так? Змінні first та second є текстовими. При застосування оператора порівняння "більше" вони не конвертуються в числовий тип, а порівнюються як текст. Тобто використовуються лексикографічний порядок або, простішими словами, значення порівнюється "по алфавіту...