Пару слов о средах разработки
Теперь я бы хотел пояснить строку SetEnv APPLICATION_ENV development, которую мы вписали в наш виртуальный хост.
Среды разработки предназначены для того, чтобы организовать работу в команде или просто обеспечить удобную работу над созданием Zend приложения. Каким образом? Допустим у вас имеется хостинг, где есть база данных с названием hostdb, пользователем hostdbuser, и паролем hostdbuserpass. А на локальной машине у вас база homedb, пользователь hostdbuser и пароль hostdbuserpass. Для того чтобы Zend приложение понимало откуда брать данные автоматически когда оно запускается на локалке или на сервере необходимы среды разработки. По умолчанию в Zend Framework 3 среды. production, staging и development (хотя мы можем создавать и свои собственные). Если вы внимательно посмотрите в содержание application.ini то увидите записи следующего вида: . Это означает, что среда разработки development наследуются от среды разработки production (которая в каждом Zend проекте запускается по умолчанию). Значит, если production запускается по умолчанию, то целесообразно разместить данные для подключени к БД от сервера именно в эту секцию, а от домашнего в секцию development. Что при этом происходит:
Вариант 1. На локальном хосте
- Zend приложение загружается, ищет среду разработки.
- Виртуальныей хост, который мы настроили говорит, что среда разработки development.
- Zend подгружает секцию development, где находятся данные для работы с локальной БД
Вариант 2. На хостинге
- Zend приложение загружается, ищет среду разработки — не находит.
- Zend по умолчанию определяет среду разработки production.
- Zend подгружает секцию production, где находятся данные для работы с БД на хостинге.
Надеюсь, теперь вам более ясно что такое среды разработки.
Давайте экспериментировать:
Зайдите в папку application/controllers. Внутри этой папки должно быть 2 файла. IndexController и ErrorController. Эти контроллеры были сформированы когда вы создавали проект при помощи Zend Tool. Откройте IndexController.
<?php class IndexController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } }
Мы видим, что в IndexController есть 2 метода: _init() и indexAction. Функция init вызывается каждый раз при запуске контроллера. indexAction() это функция представляющая из себя страницу сайта. Чтобы убедиться в этом внесите в функцию indexAction следующую строку:
echo "Я в IndexController, в indexAction!!!";
Чтобы достучаться до этого action пройдите по адресу www.zfdemo.web/index/index. Данная запись означает, что мы обращаемся к контроллеру index и действию index. Но помимо нашей строки вы видите ещё какой-то материал. Это происходит потому что у каждого action есть свой view (или представление).
Пройдите в папку application\views\scripts\index и откройте файл index.phtml
<style> a:link, a:visited { color: #0398CA; } span#zf-name { color: #91BE3F; } div#welcome { color: #FFFFFF; background-image: url(https://framework.zend.com/images/bkg_header.jpg); width: 600px; height: 400px; border: 2px solid #444444; overflow: hidden; text-align: center; } div#more-information { background-image: url(https://framework.zend.com/images/bkg_body-bottom.gif); height: 100%; } </style> <div id="welcome"> <h1>Welcome to the <span id="zf-name">Zend Framework!</span></h1> <h3>This is your project's main page</h3> <div id="more-information"> <p><img src="https://framework.zend.com/images/PoweredBy_ZF_4LightBG.png" /></p> <p> Helpful Links: <br /> <a href="http://framework.zend.com/">Zend Framework Website</a> | <a href="http://framework.zend.com/manual/en/">Zend Framework Manual</a> </p> </div> </div>
В этом файле находится всё то, что вы видите на странице. Удалите всё содержимое файла index.phtml и перезагрузите страницу www.zfdemo.web/index/index или просто www.zfdemo.web/index/ т.к. indexAction запускается по умолчанию. Теперь на странице должно быть только наше сообщение “Я в IndexController, в indexAction!!!”
5 последних уроков рубрики «PHP»
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак
В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение
В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Создание проекта
Откройте терминал или консоль и перейдите в каталог, который является корнем вашего сайта (root папку). В моём случае это C:\wamp\www. Если вы являетесь обладателем Linux или его дистрибутивов, до и после создания проекта убедитесь, что для вашего пользователя и web сервера были выставлены права на запись.
zf create project zfdemo
Если теперь вы посмотрите на содержимое корневого каталога сайта, то увидите множество папок и файлов, которые были созданы инструментом Zend Tool. Этот на первый взгляд хаос является структурой Zend Framework проекта. Без Zend Tool вам бы пришлось создавать всё это руками.
Папка application это ядро нашего будущего сайта. Там будут располагаться все коды, отвечающие за работу web-приложения. В каталоге application вы найдёте другие папки концепция которых уже давно на слуху: controllers, models, views.
Каталог public это корень вашего сайта, а это значит, что нам необходимо создать виртуальный хост, в настройках которого будет указано, что каталог public является корневым. Так же в каталоге public будут содержаться все изображения, javascript скрипты, css стили и прочие файлы.
Папка library может содержать саму библиотеку Zend, но не только. Туда можно закидывать любые другие библиотеки, которые могут понадобиться вам при разработке вашего сайта.
Все остальные каталоги будем рассматривать по мере надобности.
Установка Zend Optimizer на php 5.3.3 в Debian (Ubuntu)
20 Июнь 2012
ceval
Установка Zend Optimizer на php 5.3.3 в Debian (Ubuntu)
Поставил себе на тестовом сервере php 5.3.3 и понадобилась поставить Zend Optimizer, и оказывается что последняя версия Zend Optimizer 3.3.9 работает только на PHP (4.3.x, 4.4.x, 5.0.x, 5.1.x, 5.2.x).
Теперь для версии php 5.3.3 надо ставить Zend Guard Loader (Runtime for PHP 5.3).
Внимание если стоял Zend Optimizer то его удаляем.
Пакеты можно взять здесь:Linux 32 bit (Debian based) … 386.tar.gzLinux 64 bit (Debian based) … 64.tar.gzLinux 32 bit (Redhat based) … 386.tar.gzLinux 64 bit (Redhat based) … 64.tar.gzWindows zip
Cоздаем файл zend.ini в директории /etc/php5/conf.d
1 2 3 4 5 6 7 8 |
# полный путь до модуля zend_extension=/usrlocallibZendZendGuardLoader.so zend_loader.obfuscation_level_support=3 zend_loader.enable = 1 # отключить проверку лицензии (из соображений производительности) zend_optimizer.disable_licensing = # путь к файлу лицензии zend_loader.license_path = "/var/www/user/config" |
Перезапускаем apache и проверяем:
Так же есть еще один вариант — это использовать Zend Optimizer 4.1, который поставляется в Zend Server community edition.
Берем модуль:ZendOptimizerPlus для 32bitZendOptimizerPlus для 64bit
Так же создаем для него конфигурационный файл, что типа:
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 |
zend_extension=/usrlocalZend53ZendOptimizerPlus.so ; Optimizer+ OnOff switch. When set to Off, code is not optimized. zend_optimizerplus.enable=1 ; If set to On, use the current directory as a part of the script key zend_optimizerplus.use_cwd=1 ; If enabled, the Optimizer+ checks the file timestamps and updates the cache accordingly. zend_optimizerplus.validate_timestamps=1 ; How often to check file timestamps for changes to the shared memory storage allocation. (units seconds) zend_optimizerplus.revalidate_freq=2 ; Enables or disables file search in include_path optimization zend_optimizerplus.revalidate_path= ; The verbosity of the Optimizer+ log zend_optimizerplus.log_verbosity_level=1 ; The Optimizer+ shared memory storage size. The amount of memory for storing precompiled PHP code in Mbytes. (units MBytes) zend_optimizerplus.memory_consumption=64 ; The maximum number of keys (scripts) in the Optimizer+ hash table zend_optimizerplus.max_accelerated_files=2000 ; The maximum percentage of “wasted” memory until a restart is scheduled (units %) zend_optimizerplus.max_wasted_percentage=5 ; Check the cache checksum each N requests zend_optimizerplus.consistency_checks= ; How long to wait (in seconds) for a scheduled restart to begin if the cache is not being accessed (units seconds) zend_optimizerplus.force_restart_timeout=180 ; The location of the Optimizer+ blacklist file zend_optimizerplus.blacklist_filename= ; If enabled, a fast shutdown sequence is used for the accelerated code zend_optimizerplus.fast_shutdown= ; A bitmask, where each bit enables or disables the appropriate Optimizer+ passes zend_optimizerplus.optimization_level=0xfffffbbf ; Enables or disables the optimization passes that may take significant time, based on an internal runtime calculation zend_optimizerplus.enable_slow_optimizations=1 |
Но в моем случаи это не сработало выдало ошибку «Zend Optimizer not installed», а с вариантом ZendGuardLoader такой ошибки не было.
Читаем еще:
- Управления пакетами в Debian/Ubuntu, небольшая шпаргалка
- xCache — акселератор PHP, который увеличивает скорость выполнения php скриптов
- Релиз Zabbix 2.0
- Исправляем ошибку eAccelerator после обновления PHP.
- Вышел в свет LibreOffice 3.5
Categories: Новости Debian, Ubuntu, Zend Optimizer, ZendGuardLoader
Проектируем приложение
Для демонстрации концепции Zend Framework продемонстрируем его работу на небольшом примере. Создадим картотеку любимых видео фильмов. Работу с базой, я продемонстрирую в следующем уроке, но для общего сведения структуру приведу сейчас. Для хранения данных нам потребуется следующая таблица:
id integer Not Null Primary key
title varchar(100) Not Null
director varchar(100) Not Null
Так же нам понадобятся следующие страницы:
Главная — на которой будет отображать список фильмов
Добавление записи — страница, содержащая форму добавления нового фильма
Редактирование записи — страница редактирования фильма
Удаление записи — удаление фильма из БД
Установка Zend Framework и Zend Tool
1. Скачиваем последнюю версию Zend Framework
- Скачайте последнюю версию пакета Zend Framework 1.11.X Full;
- Извлекаем из архива всё содержимое;
2. Переносим содержимое архива
- Копируем разархивированную папку в каталог C:\wamp\bin и переименовываем её например в zf;
- Теперь содержимое фрэймворка можно найти по адресу C:\wamp\bin\zf. Если вы всё сделали правильно, то по данному адресу у вас должны располагаться такие каталоги: bin, demos, externals, extras, librarz и т.д.
3. Конфигурируем Zend Tool
- Нажмите правый клик на иконке «Компьютер» в панели пуск (Windows 7) и выберите пункт «Свойства».
- В левой части панели выберите пункт «Дополнительны параметры системы».
- В открывшемся окне нажмите кнопку «переменные среды».
- Далее в списке системные переменные, ищем переменную Path и делаем на ней двойной клик. Перед вами должно открыться следующее окно.
- Нажимаем на содержимое поля «значение переменной», перемещаемся в конец строки;
- Ставим точку с запятой «;» (без кавычек);
- Далее вписываем адрес «C:\wamp\bin\zf\bin» (без кавычек);
- Жмём OK;
- После этого не помешает перезагрузить компьютер, чтобы все изменения нормально встали.
4. Проверка работы Zend Tool
- Откройте командную строку. Нажмите клавиши Windows->R. В открывшемся окне наберите команду cmd;
- В командой строке наберите zf и нажмите Enter. После этого перед вами появится список всевозможных команд, некоторые из которых мы рассмотрим в данном уроке. Если этого не произошло, значить вы неверно сконфигурировали Zend Tool.
5. Прописываем Zend Framework в php.ini
Вот и всё. Мы только что установили Zend Framework, сконфигурировали Zend Tool и готовы приступить к созданию нашего нового проекта.
Установка Zend Guard
Как и в случае с Zend Optimizer, первым делом что нужно сделать, так это скачать нужный Zend Guard для конкретной версии ПХП. Я приведу все допустимые на данный момент поддерживаемые версии Zend Guard. Вы можете скачать сами или использовать мои готовые ссылки.
ZendGuardLoader (PHP 5.3).
32-x бит ОС:
# wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
64-x бит ОС:
# wget http://downloads.zend.com/guard/5.5.0/ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz
ZendGuardLoader (PHP 5.4).
32-x бит ОС:
# wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-i386.tar.gz
64-x бит ОС:
# wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
ZendGuardLoader (PHP 5.5).
32-x бит ОС:
# wget http://downloads.zend.com/guard/7.0.0/zend-loader-php5.5-linux-i386.tar.gz
64-x бит ОС:
# wget http://downloads.zend.com/guard/7.0.0/zend-loader-php5.5-linux-x86_64.tar.gz
ZendGuardLoader (PHP 5.6).
32-x бит ОС:
# wget http://downloads.zend.com/guard/7.0.0/zend-loader-php5.6-linux-i386.tar.gz
64-x бит ОС:
# wget http://downloads.zend.com/guard/7.0.0/zend-loader-php5.6-linux-x86_64.tar.gz
Установка Zend Guard на CentOS.
Пример, на сервере (CentOS x64-бит)имеется PHP 5.3. Распаковываем нужный архив и выставляем правильные права (т.к в самом архиве права на файлы — 777 и это не безопасно):
# tar xzvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /usr/lib64/php/ # chmod -R 755 /usr/lib64/php/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/
Добавляем модуль в загрузку:
# echo 'zend_extension=/usr/lib64/php/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x/ZendGuardLoader.so' >> /etc/php.d/zend.ini
Проверяем:
# php -m
Ребутим apache:
# /etc/init.d/httpd restart
Установка Zend Guard на Debian/Ubuntu.
Пример, на сервере (Debian x64-бит)имеется PHP 5.3. Распаковываем нужный архив и выставляем правильные права (т.к в самом архиве права на файлы — 777 и это не безопасно):
# tar xzvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /usr/lib/php5/ # chmod -R 755 /usr/lib/php5/ZendGuardLoader-php-5.3-linux-glibc23-i386/ # echo 'zend_extension=/usr/local/ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/ZendGuardLoader.so' > /etc/php5/conf.d/zend.ini
Ребутим apache:
# /etc/init.d/apache2 restart
Проверяем работу:
# php -m |grep Zend
или
# php -v
Все! Установка Zend Optimizer/Zend Guard на Unix/Linux завершена.
Загрузка пакета Zend Optimizer
Зайдите на сервер по SSH и выполните команду:
Для 32-разрядных операционных систем (архитектура i386/i686)
Для 64-битной архитектуры (x86_64/amd64)
Определить архитектуру и операционную систему, которая установлена у вас на сервере, можно выполнив команду uname -a и посмотрев файл /etc/redhat-release (для CentOS) или /etc/debian_version (для Debian соответственно)
# uname -a Linux example.com 2.6.18-128.2.1.el5.028stab064.8ent #1 SMP Sat Oct 31 11:32:49 MSK 2009 i686 i686 i386 GNU/Linux # cat /etc/redhat-release CentOS release 5.4 (Final)
В данном случае на сервере установлена операционная система CentOS 5.4 с архитектурой i386
Установка Zend Optimizer в среде Windows
Запустите скачанный установщик двойным щелчком курсора мыши. Мастер установки первым шагом проверит конфигурацию вашего компьютера и проверит существуют ли уже установленные ранее версии Optimizer’а.
Шаг 3 — Лицензионное соглашение
Для того, чтобы продолжить установку вам необходимо прочитать и согласиться с условиями лицензионного соглашения. Для этого выберите опцию «I accept the terms of license agreement» и нажмите кнопку «Next» для перехода к следующему шагу.
Шаг 4 — Выбор места установки программы
На данном шаге вам предлагается выбрать папку, в которую следует установить Zend Optimizer. По умолчанию мастер предложит установить Optimizer в папку C:\Program Files\Zend\ZendOptimizer-3.x.x
Вы можете изменить местоположение папки установки используя кнопку «Browse…».
После тогого, как папка установки будет выбрана, нажимайте кнопку «Next» для перехода к следующему шагу.
Шаг 5 — Выбор веб-сервера
Укажите веб сервер, с которым будет работать Zend Optimizer. В основном, вам следует сделать свой выбор между веб-серверами IIS, Apache 1.x, Apache 2.x и другими. Вам следует правильно указать с какой версией Apache следует иметь дело установщику — в этом случае установщик сможет автоматически правильно настроить веб-сервер на работу с Zend Optimizer’ом.
После того, как веб-сервер будет выбран, нажмите «Next» для перехода к следующему шагу.
Шаг 6 — Выбор местоположения файла php.ini
Установщику потребуется записать в файл конфигурации РНР свои настройки. Для этого вы должны указать правильный путь к папке в которой данный файл расположен в вашей системе. По умолчанию, установщик предполагает, что php.ini файл расположен в папке C:\WINDOWS\. Если это не так, нажмите кнопку «Browse…» и выберите папку с помощью такого диалогового окна:
Обычно файл php.ini располагается либо в папке C:\WINDOWS, либо в папке установки интерпретатора РНР. Если вы нашли несколько таких файлов в своей системе и не знаете какой же из них вам следует выбрать, сделайте следующее.
В корнневой директории веб вашего веб-сервера поместите файл info.php со следующим содержимым:
<?php
phpinfo();
?>
Откройте ваш браузер и наберите адрес доступа по HTTP к данному файлу на вашем локальном веб-сервере. Как правило такой адрес выглядит так:
В результате вы должны увидеть информацию о вашем веб-сервере и интерпретаторе РНР. Посмотрите значение директивы «Configuration File (php.ini) Path». В значении будет указано какой файл настроек интерпретатора РНР использует ваш веб-сервер.
После того, как путь к файлу настроек PHP будет указан нажимайте кнопку «Next» для перехода к следующему шагу.
Шаг 7 — Выбор местоположения установки веб-сервера
Вам следует указать папку, в которой находится установленный веб-сервер. Для выбора этой папки воспользуйтесь кнопкой «Browse»
Правильно указать папку установки веб-сервера очень важно для изсбежания ошибок в работе мастера
После того как папка будет указана должным образом, нажимайте кнопку «Next» для перехода к следующему шагу.
Шаг 8 — Подтверждение правильности собранной информации
Мастер предложит вам ещё раз внимательно изучить какая информация была собрана им в процессе установки. Если вы увидите, что какая-то информация указана неверно, у вас ещё есть шанс вернуться и исправить ее. Для этого воспользуйтесь кнопкой «Back» для возврата к предыдущим шагам.
Если же вы уверены в правильности собранной информации, смело нажимайте «Install» и переходите непосредственно к установке Zend Optimizer’а.
Шаг 9 — Установка Zend Optimizer
Если ваш веб-сервер запущен, мастер выдаст вам предупреждение о том что на протяжении процесса установки Zend Optimizer ваш сервер будет отключен. Вам следует нажать «Да» («Ok»), т.е. согласиться на это условие.
Далее вы увидите сообщения об остановке сервера:
А также об установке Optimizer’а и включении веб-сервера. После этого мастер должен вам показать свой последний экран.
Шаг 10 — Завершение установки
Если вы увидели данное окно, значит установка Zend Optimizer прошла успешно. Чтобы выйти из программы установки нажмите кнопку «Finish» или просто закройте это окно.
Знакомимся с контроллерами, экшенами и вью
В Zend Framework контроллеры это специальные классы со строгим правилом наименования. Тут вообще всё очень строго и сурово. К примеру имя контроллера должно быть составлено следующим образом: {Имя_контроллера}Controller. К примеру: IndexController, ErrorController, UserController и т.д. Название контроллера должно начинаться с заглавной буквы. Все контроллеры должны располагаться в папке application/controllers.
Каждый контроллер включает в себя набор действий или другими словами actions. Action это функция с модификатором доступа public, которая представляет собой страницы вашего сайта. Именуются они тоже строго: {имя_действия}Action. К примеру indexAction(), printAction() и т.д. Название действия начинается с прописной буквы!
Как установить Zend Optimizer Zend Guard Loader в Linux (centos)
http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>style=»clear:both;»>
Многие системы с открытым исходным кодом php основаны на Zend Optimizer, поэтому нам нужно сначала установить Zend Optimizer.Но после php5.3 Zend Optimizer был заменен на Zend Guard Loader, поэтому мы должны установить Zend Guard Loader.
, Ниже приводится конкретный метод установки Zend Guard Loader.
Подготовка перед установкой
uname -m # Посмотреть количество операционных систем centos php -v # Посмотреть версию PHP
вНайдите соответствующую версию PHP Zend Guard Loader, которая подходит вашей системе (32-разрядная или 64-разрядная), загрузите и разархивируйте ее.
wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz tar -zxvf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz cd ZendGuardLoader / # Войдите в распакованный каталог cat README.txt # Просмотреть документ README.
начать установку
Скопируйте ZendGuardLoader.so из папки соответствующей версии PHP в каталог установки PHP (каталог / etc / httpd / modules или каталог / usr / lib / httpd / modules, эти два каталога фактически находятся в одном месте)
cp ZendGuardLoader.so /usr/lib/httpd/modules
Отредактируйте файл конфигурации php. Добавьте несколько строк элементов конфигурации в конец файла php.ini.
vim /etc/php.ini zend_extension=/etc/httpd/modules/ZendGuardLoader.so zend_loader.enable=1 zend_loader.disable_licensing=0 zend_loader.obfuscation_level_support=3
Проверьте, правильно ли настроен файл конфигурации
php -s
Перезагрузите Apache или Nginx
systemctl перезапустите httpd или systemctl restart php-fpm
Перепечатано по адресу: https://www.cnblogs.com/Beyron/p/6189418.html
Интеллектуальная рекомендация
19.03.21 Я загрузил комплексные обучающие видеоуроки Photoshop CC 2015 и обучающие видеоуроки по новым функциям PS CC 2015. Я просмотрел несколько видео, но мне кажется, что они в основном объясняют н…
…
проверка данных весеннего mvc Два способа проверки данных Spring MVC: 1.JSR303 2.Hibernate Validator Второй метод является дополнением к первому методу Шаги для проверки данных с использованием Hibern…
Существует два способа вызова между сервисами Springcloud: RestTemplate и Feign. Здесь мы представляем сервисы вызова RestTemplate. 1. Что такое RestTemplate RestTemplate — это структура веб-запросов …
1. Понимать предварительный, средний, последующий порядок и иерархическую последовательность бинарных деревьев; Свяжите язык C со структурой данных двоичного дерева; Освойте с…
Вам также может понравиться
Последнее обучение, как использовать Kaldi, чтобы проснуться без использования WSTF, поэтому вам нужно глубоко пойти в Kaldi для обучения. Временное состояние обучения. Три изображения представляют со…
Во время простоя некоторые веб-страницы, которые мы создали, не были завершены, но не хотят, чтобы другие видели, вы можете создать простой эффект шифрования страницы на странице этой веб-страницы, ан…
Расширенные статьи серии Zookeeper 1. NIO, ZAB соглашение, 2PC представления концепции 2. Лидер выборов 3. Рукописный распределенный замок, центр настройки ==================================== 1. NIO,…
Посмотрите на конечный эффект первым DemoPreview.gif SETP1 эффект капли воды Первая реакция на эффект капли воды — нарисовать замкнутую кривую. С помощью события MotionEvent измените радиус во время п…
…