Skip to content

Instantly share code, notes, and snippets.

View yamnikov-oleg's full-sized avatar

Oleg Yamnikov yamnikov-oleg

  • Self-employed
  • Orenburg, Russia
View GitHub Profile
@yamnikov-oleg
yamnikov-oleg / main.dart
Created February 26, 2025 05:47
Flutter: Форма 2
// ЗАДАНИЕ:
// Перед вами нефункциональный черновик экрана с формой заказа.
// Попробуйте запустить его.
// По нажатию на кнопку "Отправить" форма должна отправлять запрос
// на бэкенд с помощью метода ApiClient.post.
//
// Завершите реализацию экрана с хорошим UI/UX на ваше усмотрение.
// Допустимо сделать рефакторинг виджетов.
// Бонус: используйте в реализации пакет state management на ваш выбор
// (в dartpad все популярные пакеты предустановлены).
@yamnikov-oleg
yamnikov-oleg / main.dart
Last active February 26, 2025 05:39
Flutter: Список товаров 2
// ЗАДАНИЕ:
// Реализуйте экран ProductListScreen, выводящий товары из списка products.
// Выведите для каждого товара название, описание и цену.
// Оформите UI по своему усмотрению.
//
// ЗАДАНИЕ 2:
// Добавьте экран товара, который открывается по тапу на товар в списке.
// Бонус: используйте пакет роутинга (go_router или auto_router) на свой выбор.
// (В dartpad все популярные пакеты предустановлены.)
//
@yamnikov-oleg
yamnikov-oleg / main.dart
Last active February 17, 2025 05:40
Flutter: Тесты репозитория
// ЗАДАНИЕ:
// Завершите реализацию класса LocalOrderRepository согласно документации
// его интерфейса.
// Покройте реализацию юнит-тестами.
import 'package:flutter_test/flutter_test.dart';
import 'package:equatable/equatable.dart';
/// Заказ.
class Order extends Equatable {
Order({
@yamnikov-oleg
yamnikov-oleg / main.dart
Last active January 29, 2025 10:16
Flutter: Рефакторинг
// ЗАДАНИЕ:
// Проведите ревью кода приложения. Попробуйте его запустить.
// Что можно сделать, чтобы привести его в production-ready вид?
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() {
runApp(MyApp());
@yamnikov-oleg
yamnikov-oleg / main.dart
Last active February 26, 2025 05:52
Flutter: Separate
// ЗАДАНИЕ:
// Напишите функцию separate, которая вставляет новые элементы в Iterable
// некоторого произвольного типа.
// Новые элементы добавляются между каждой парой существующих элементов.
// separate должна возвращать Iterable того же типа.
//
// Например:
// separate([1, 2, 3], (a, b) => 0) // => [1, 0, 2, 0, 3]
// separate(["x", "y", "z"], (a, b) => a + b) // => ["x", "xy", "y", "yz", "z"]
//
@yamnikov-oleg
yamnikov-oleg / main.dart
Last active February 26, 2025 05:49
Flutter: Форма
// ЗАДАНИЕ:
// Перед вами нефункциональный черновик экрана с формой заказа.
// Попробуйте запустить его.
// По нажатию на кнопку "Отправить" форма должна отправлять запрос
// на бэкенд с помощью метода ApiClient.post.
//
// Завершите реализацию экрана с хорошим UI/UX на ваше усмотрение.
// Допустимо сделать рефакторинг виджетов.
// Бонус: используйте в реализации пакет state management на ваш выбор
// (в dartpad все популярные пакеты предустановлены).
@yamnikov-oleg
yamnikov-oleg / main.dart
Last active February 26, 2025 05:39
Flutter: Список товаров
// ЗАДАНИЕ:
// Реализуйте экран ProductListScreen, выводящий товары из списка products.
// Выведите для каждого товара название, описание и цену.
// Оформите UI по своему усмотрению.
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
class Product {
@yamnikov-oleg
yamnikov-oleg / formulas.py
Last active July 24, 2023 09:31
An example implementation of a formula evaluator written on top of Python's AST package. See https://blog.oyam.dev/python-formulas/
"""
An example implementation of a formula evaluator written on top of Python's AST package.
See https://blog.oyam.dev/python-formulas/
Usage:
>>> evaluate_formula("a + b", {"a": 1, "b": 2})
3
"""
@yamnikov-oleg
yamnikov-oleg / Program.cs
Last active March 12, 2018 11:42
Пример получения списка сертификатов КриптоПро CSP
var hStore = Libcapi.CertOpenSystemStoreA(IntPtr.Zero, "MY");
Console.WriteLine("hStore = {0}", hStore);
Console.WriteLine("GetLastError: {0}", Librdrsup.GetLastError());
var pCtx = Libcapi.CertEnumCertificatesInStore(hStore, IntPtr.Zero);
while (pCtx.ToInt32() != 0)
{
var ctx = Marshal.PtrToStructure<Libcapi.CertContext>(pCtx);
var info = Marshal.PtrToStructure<Libcapi.CertInfo>(ctx.pCertInfo);
@yamnikov-oleg
yamnikov-oleg / LICENSE
Last active January 14, 2025 10:58
Shared (interprocess) mutexes on Linux
MIT License
Copyright (c) 2018 Oleg Yamnikov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: