нещодавно Вирішив написати невелике ASP.Net MVC додаток після багаторічної перерви і знаючі люди на Хабре підказали спробувати новий ASP.Net Core, тим більше, що він працює в Лінуксі з коробки без необхідності задіяти mono, і, судячи з останніми тестами, навіть показує непогану продуктивність. За основу взяв аналогічну статтю для Mac, але тут на відміну від надихнула мене статті хочу описати процес покроково в одному місці, для того, щоб не довелося лазити по перехресним посиланням, намагаючись розібратися як встановити незрозуміло для чого призначені програми та пакети. Таке докладний опис процесу можливо допоможе багатьом уникнути граблів, з якими довелося зіткнутися мені. Кілька фраз і малюнків, в частині однаковою для будь-якої платформи, з правками і доповненнями взяті з статті для Mac.


Читати далі →

Python: Робота з базою даних, 1/2 частина: Використовуємо DB-API

Python DB-API – це не конкретна бібліотека, а набір правил, яким підпорядковуються окремі модулі, що реалізують роботу з конкретними базами даних. Окремі нюанси реалізації для різних баз можуть відрізнятися, але загальні принципи дозволяють використовувати один і той же підхід при роботі з різними базами даних.

У статті розглянуто основні методи DB-API, що дозволяють повноцінно працювати з базою даних. Повний список можете знайти за посиланнями в кінець статті.

Необхідний рівень підготовки: базове розуміння синтаксису SQL і Python.

Читати далі →

Нова SQLite ORM для C++

Всім привіт. Пишу на Хабре вперше, не судіть строго. Хочу поділитися своїм досвідом пошуку універсальної SQLite ORM бібліотеки на С++ і моєю новою розробкою власної бібліотеки для роботи з SQLite на C++ sqlite_orm.
Коли я шукав ORM'ку я відштовхувався від декількох ключових пунктів:
  • бібліотека повинна мати як CRUD, так і не CRUD
  • повинні бути гнучкі умови WHERE, а не тупо
    WHERE id = ?
  • повинен бути функціонал міграцій (синхронізації схеми) на випадок оновлень додатка
  • фічі начебто ORDER BY і LIMIT теж повинні бути
  • серіалізація класів не повинна бути написана в своїх класах. Це дуже важливий пункт для мене з тих пір, як я познайомився з Java і з Android-розробкою зокрема. Android-розробники намагаються дотримуватися принципу єдиної відповідальної (single responsibility principle), що дуже важливо якщо додаток зібрано з різною купи бібліотек і модулів, які можуть змінюватися з плином часу. І тому найпопулярніша на github SQLite ORM'ка на С++ hiberlite мене не влаштувала способом серіалізації — клас моделі повинен мати статичну функцію
    serialize
    з кодом безпосередній серіалізації. Я шукав такий модуль, від якого би не залежав код моєї моделі даних. Адже у мене може бути кілька сериализаторов (JSON, XML, SQLite), і по-хорошому кожен повинен додаватися до моделі даних, але ніяк її не міняти, а інакше вийде каша в коді моделі.

Читати далі →

Розробка для Sailfish OS: робота з LocalStorage

Доброго дня! Дана стаття є продовженням циклу статей, присвячених розробки для мобільної платформи Sailfish OS. В цей раз ми вирішили розповісти про програму для контролю фінансів, що дозволяє користувачеві вести журнал доходів і витрат, а також відкладати кошти для здійснення цілей. Варто згадати, що цей додаток є одним з переможців хакатона за Sailfish OS в Ярославлі, організованого компанією «Відкрита Мобільна Платформа» та асоціацією FRUCT.

Читати далі →

ASP.NET Core: Приклад реалізації шаблонів проектування Одиниця роботи і Репозиторій

У цій статті ми поговоримо про шаблони проектування «Одиниця роботи» і «Сховище» в контексті тестового веб-додатки на ASP.NET Core (з використанням вбудованого DI), яке ми з вами разом і розробимо. В результаті ми отримаємо дві реалізації взаємодії з сховищем: справжню, на основі бази даних SQLite, і фейковую, для швидкого тестування, на основі перерахування в пам'яті. Перемикання між цими двома реалізаціями буде виконуватися зміною однієї строчки коду.



Читати далі →

Scrapy: збираємо дані і зберігаємо в базу даних

Введення
Мене зацікавив даний фреймворк для збору інформації з сайтів. Тут були публікації з Scrapy, але оскільки детальної інформації російською мовою мало, то я хотів би розповісти про свій досвід.

Читати далі →

Робота з БД в CleverStyle Framework

На рахунок БД на перший погляд може здатися, що функціональність з коробки досить убога. Частково це правда, але компенсується тим, арсенал дуже добре продуманий, вирішує поставлені завдання і орієнтований на продуктивність.
А якщо вам потрібні більш функціональні інструменти — їх завжди можна встановити за смаком, це набагато простіше ніж випиляти складного вайлуватого монстра.
Ця стаття покаже основні інтерфейси, а трейты
cs\CRUD
та
cs\CRUD_helpers
залишаться на інший раз.
Читати далі →

Частина 1. Платформа СППР Універсальні алгоритми

Вітаю, шановне товариство!
Забігаючи наперед прошу вибачення у тих, хто очікує новизни або революційних ідей. Їх тут немає. Але є цілком хороша прикладна система.

Системи підтримки прийняття рішень зараз набирають обертів. Причому я не буду особливо зупинятися на перерахуванні способів реалізації. Скажу лише про основні властивості. Я б дуже спрощено і узагальнено назвав ці системи імовірнісними. Тобто вони видають рекомендації з певною часткою ймовірності використовуючи накопичену проанализированную статистику. Не скажу, що це погано. Тема BigData і Machine learning нині у тренді. Так само ці системи працюють за принципом «чорного ящика». Тому перевірити достовірність роботи закладеної моделі не завжди можна виявити.

Читати далі →

Web scraping оновлюваних даних за допомогою Node.js і PaaS

Це вже четверта стаття в циклі про веб-скрейпинг за допомогою Node.js:
  1. Web scraping за допомогою Node.js
  2. Web scraping на Node.js і проблемні сайти
  3. Web scraping на Node.js і захист від ботів
  4. Web scraping оновлюваних даних за допомогою Node.js
У минулих статтях були розглянуті отримання і парсинг сторінок, рекурсивний прохід по посиланнях, організація і тонка настройка черги запитів, аналіз Ajax-сайтів, обробка деяких серверних помилок, ініціалізація сесій і методи подолання захисту від ботів.
У цій статті розуміються такі теми, як веб-скрейпинг регулярно оновлюваних даних, відстеження змін і використання хмарних платформ для запуску скриптів і збереження даних. Ще увага приділяється розподілу завдань веб-скрейпинга і обробки готових даних, а також того, чого варто уникати при роботі з оновлюючими сайтами.
Мета статті – показати весь процес створення, розгортання і використання скрипта від постановки задачі і до отримання кінцевого результату. Як правило, для прикладу використовується реальне завдання, які часто зустрічаються на біржах фріланса.
Читати далі →

Розробка мікро-облікової системи на lua, частина третя. Lua і взаємодія модулів

Пам'ятаєте, у попередній частині була схема взаємодії модулів? Тепер настав час розглянути її детальніше:

image

Для початкового навчання всіх бажаючих є підручник «Мову Lua за 15 хвилин» (раджу постійно тримати її відкритою). Тут я постараюся розглядати деталі, які відносяться до проекту і не згадуються в підручниках — тільки в довідниках і форумах (по можливості).

Для розуміння коду потрібно взяти до уваги такі особливості розробки на Lua:
  • Мова розроблявся, як система обробки семантичних і числових масивів даних.
  • У мові велика кількість конструкцій і функцій, призначених для парсингу інформаційних потоків (так-так!)
  • І найголовніше — практично всі види складних даних являють собою табличні області. У прямому сенсі!
  • Таким чином, знову-таки, все ускладнені об'єкти являють собою так звані метатаблицы — це масиви, які зберігають у собі опис та інформацію примірника. Вкладеність метатаблиц може бути воістину феєричної!

Читати далі →