Sonic World в Minecraft от Тёмы
Для игры нужна версия Minecraft 1.7.10 и мод Sonic the Hedgehog (в комплекте в архиве с картой).
Эта карта для фанатов Sega и Sonic которые хотят чего-то новенького.
Скачать карту и мод можно здесь
Для игры нужна версия Minecraft 1.7.10 и мод Sonic the Hedgehog (в комплекте в архиве с картой).
Эта карта для фанатов Sega и Sonic которые хотят чего-то новенького.
Скачать карту и мод можно здесь
Озадачил тут Роскомнадзор: а проверьте, доступно 65321 IP адрес в вашей сети? И предоставило текстовый файлик. А нам что? 5 минут и скрипт готов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#!/usr/local/bin/python3 # coding=utf-8 import socket import threading import time import sys import os vr="1.0" thread_count=100 info="Сей дивный скрипт пробегает список IP и смотрит доступен он или нет" copyleft="by Pavel Gribov, http://грибовы.рф"; #выводим имя ПК и версию скрипта hostname = socket.gethostname() print ("Server: ",hostname) print ("Version: ",vr) print ("info: ",info) print ("Copyright: ",copyleft) def worker(ip): response = os.system("fping " + ip+" >/dev/null") if response == 0: print ("Test:"+ip+" -ok"); if len(sys.argv)>=2: fname=sys.argv[1] else: print ("Параметры запуска:") print ("<filename> - текстовый файл со списком IP") exit(0) with open(fname, 'r') as f: ips= f.read().splitlines() for ip in ips: thread = threading.Thread(target=worker, args=(ip,)).start() while threading.active_count() >thread_count: time.sleep(1) while threading.active_count() >1: time.sleep(1) |
Казалось бы простая вещь, а телодвижений много. Странно. Но тем не менее, решение есть.
Конфигурация приложения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php return [ 'database'=>[ 'host' => '127.0.0.1', 'username'=>'root', 'password'=>'perferfre', 'basename'=>'mysql' ], 'modules' => [ 'Zend\Router', 'Zend\Validator', 'Application', ], 'module_listener_options' => [ 'module_paths' => [ './module', './vendor', ], 'config_cache_enabled' => false, 'config_cache_key' => 'application.config.cache', 'module_map_cache_enabled' => false, 'module_map_cache_key' => 'application.module.cache', 'cache_dir' => 'data/cache/', ], ]; |
Создаем фабрику IndexControllerFactory.php:
1 2 3 4 5 6 7 8 9 10 11 |
namespace Application\Controller; use Zend\ServiceManager\Factory\FactoryInterface; use Interop\Container\ContainerInterface; class IndexControllerFactory implements FactoryInterface{ public function __invoke(ContainerInterface $container, $requestedName, array $options = null){ $config = $container->get("ApplicationConfig"); return new IndexController($config); } } |
В конфигурации модуля:
1 2 3 4 5 6 |
'controllers' => [ 'factories' => [ Controller\IndexController::class => Controller\IndexControllerFactory::class, Controller\UserController::class => InvokableFactory::class, ], ], |
В контроллере:
1 2 3 4 5 6 |
class IndexController extends AbstractActionController{ var $sqln; public function __construct(array $config) { var_dump($config); } ... |
Решил попробовать не собирать каждый раз при старте нового проекта свой «каркас» приложения, а взять уже готовый фреймворк в стиле MVC и попробовать использовать его. Пока выбор пал на Zend Framework, потому что там похоже действительно самый минимум. Он не «раздутый», который для использования не требует недель изучения для «старта» (типа YII). С фреймворком,в базе для первоначального обучения идет «штатный минимальный шаблон» : https://github.com/zendframework/ZendSkeletonApplication, но мне он тоже показался слишком усложненным. Потому в ходе «упрощения» создал свой:
https://github.com/donpadlo/zend3skeleton
, который при помощи composer позволяет установить фреймворк, и позволяет поддерживать актуальными дополнительные компоненты типа jquery, bootstrap4 и т.д.
Кроме того, из штатного «скелета» вырезан лишний код, который усложняет первоначальное понимание принципов работы Zend Framework
В шаблоне так-же рассмотрен вариант использования двух контроллеров, а не одного как в «базе» (в реальных проектах число контроллеров стремится к увеличению)
Composer — это менеджер внешних библиотек для вашего проекта. Например, если вы используете jquery, jqueryui, какие-то другие библиотеки, то для того чтобы не тащить их при переносе проекта, не следить за их обновлением и актуальностью, достаточно использовать Composer. При новой инсталляции проекта достаточно будет выполнить
1 |
composer install |
для генерации начального composer.json (создание нового проекта) достаточно выполнить:
1 |
composer init |
добавить нужные пакеты в папку vendor можно:
1 2 3 4 |
composer require components/jquery:3.3.1 composer require components/jqueryui:1.12.1 composer require components/font-awesome:5.4.2 composer require components/bootstrap:4.1.1 |
Обновить пакеты можно:
1 |
composer update |
Ну и далее как использовать в своем коде PHP:
1 |
require_once vendor/autoload.php |
1 |
<script src="/vendor/components/jquery/jquery.js"></script> |
Ну и в догонку. Если у вас из проекта нет доступа к папке vendor, а нужно для использования например css и js непосредственно на странице, можно сделать симлинк, например что-то вроде:
1 2 |
pavel@pavelpc:/var/www/webuseorg4/public$ ln -s ../vendor/components/ components pavel@pavelpc:/var/www/webuseorg4/public$ |