Skip to content

Instantly share code, notes, and snippets.

@codedokode
codedokode / задача-сайт-testhub.md
Last active January 24, 2023 14:44
Сайт для тестирования TestHub

Задача

Примечание: раньше тут были другие условия задачи. Их можно найти в предыдущих ревизиях этого задания по ссылке https://gist.github.com/codedokode/8733007/e8e73b0255b3d899cb4e17dc9446fe694a8f5f7c

Cделать сайт TestHub, который позволяет создавать и проходить тесты (с вопросами и ответами). Их могут использовать например, преподаватели для проверки знаний студентов, работодатели для отсеивания кандидатов на вакансию, маркетологи для проведения опросов. Далее мы будем называть того, кто создает тесты, экзаменатором, а того, кто сдает, студентом, это лишь условные названия.

  • Предлагаемые технологии: фреймворк (Symfony 3-4 (сложнее, но интереснее), Yii2, Laravel), MySQL или Postgres, шаблонизатор Twig, ORM Doctrine
  • Время выполнения: все зависит от тебя, но я бы смотрел на 4-6 недель
  • Уровень: очень продвинутый новичок
  • Требуемые знания: PHP, MVC, ООП, HTML/CSS, SQL, основы JS
@codedokode
codedokode / Полезные ссылки.md
Last active November 26, 2022 07:30
Полезные ссылки

PHP

Что не нужно кодить самостоятельно - полезная статья, рассказывает о тех случаях, когда однозначно стоит использовать готовое решение, а не писать свой велосипед. Хочешь написать свой шаблонизатор или парсить HTML регулярками? Стой, прочти статью сначала.

Для тех, кому интересно — HTML нужно парсить XML/HTML-парсером, например встроенной в PHP библиотекой PHP DOM, искать нужные элементы в дереве удобно с помощью мини-языка запросов XPath

https://github.com/ziadoz/awesome-php - список библиотек и фреймворков на PHP на все случаи жизни. Нужен HTTP-клиент или валидатор JSON? Найдется.

http://phptrends.com/ — поиск по библиотекам и фреймворкам с учетом поулярности.

@codedokode
codedokode / Паттерны работы с базой данных.md
Last active November 21, 2022 06:58
Паттерны работы с базой данных

Это старая версия урока, которая больше не обновляется. Новая версия расположения тут: https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md


Паттерны работы с базой данных

Разберемся, как правильно с применением ООП сохранять и загружать данные из базы. Существуют такие подходы:

@codedokode
codedokode / Задача на клон rghost.md
Last active October 10, 2022 17:30
Задача на клон rghost, ООП и MVC

Задание на ООП и MVC

Для выполнения задания нужно: иметь представление о HTML/CSS (так как мы делаем сайт на фреймворке, а страницы сайтов пишутся на HTML), иметь представление о SQL-запросах или желание в них разобраться (так как мы будем работать с базой данных), иметь представление об ООП (так как все популярные фреймворки используют ООП).

Нужно иметь установленные и настроенные Апач/PHP/любую SQL- или NoSQL-базу данных (или денвер/XAMPP но лучше бы установить компоненты по отдельности, дает полезные навыки).

Если есть пробелы в знаниях, у меня есть паста про установку Апача и пара уроков по ООП.

Задание поможет: разобраться в MVC, научиться использовать один из фреймворков, использовать современные подходы к разработке, писать более правильный код.

@codedokode
codedokode / measure.py
Created July 12, 2022 14:02
Measure true RAM and SWAP consumption in Linux with grouping by user or application
import os
import re
import sys
import pwd
import csv
from dataclasses import dataclass
from typing import TextIO, Optional, Sequence
Pid = int
Uid = int
@codedokode
codedokode / Задача на калькулятор.md
Created October 16, 2013 10:54
Задание на калькулятор и ООП

Задача про калькулятор на ООП

  • Уровень: джуниор с широким кругозором и целеустремленностью
  • Ключевые слова для гугления подсказок: грамматики, токенайзер, парсер, recursive descent, обратная польская запись, AST
  • Время: 2-3 дня

Ты можешь использовать любой понравившийся язык и библиотеки, но, пожалуйста, не ищи готовые решения и не копипасть код (можно найти решение на другом языке, разобраться, как оно работает, и написать своими словами, если сам додуматься не смог). Гуглить и использовать алгоритмы можно.

Задание: сделать программу-калькулятор, считающую значение математического выражения. Выражение содержит целые (123) и дробные числа (13.45), скобки, операции +, -, /, *, ^ (возведение в степень). В выражении должен соблюдаться приоритет операций:

Этот урок переехал в мой гитхаб: https://github.com/codedokode/pasta/blob/master/php/exceptions.md - ниже представлена старая версия, потому советую перейти и прочитать новую.


Как использовать исключения в PHP

Если ты изучаешь ООП, ты наверняка натыкался на исключения. В мануале PHP описаны команды try/catch/throw и finally (доступна начиная с PHP 5.5), но не объясняется толком как их использовать. Чтобы разобраться с этим, надо узнать почему они вообще были придуманы.

А придуманы они были, чтобы сделать удобную обработку ошибок.

@codedokode
codedokode / proxy.php
Created December 23, 2016 22:22
Простой прокси-сервер на PHP для изучения и модификации данных, передаваемых между браузером и сторонним сервером
<?php
/**
* Простой прокси-сервер на PHP для изучения и модификации данных,
* передаваемых между браузером и сторонним сервером.
*
* Запуск:
*
* указать URL сайта в $base
* php -S 127.0.0.1:9001 proxy.php
*
@codedokode
codedokode / DI, IoC.md
Last active December 27, 2021 16:38
DI, IoC, ServiceLocator, Registry

Этот урок переехал в мой гитхаб по адресу: https://github.com/codedokode/pasta/blob/master/arch/di.md

Ниже устаревшая версия урока.


Зачем нужны Depencdency Injection, IoC, ServiceLocator, Registry (и что это?)

Проблема, которую мы решаем — связность классов. Если в классе A написано