qiuyuhome / candy Goto Github PK
View Code? Open in Web Editor NEW技术宅要搞事情啦
License: MIT License
技术宅要搞事情啦
License: MIT License
要搞事情, 不知道搞什么.
最后我家老大说, 那你们的团队可以叫 搞事情团队.
老王又给起了一个英文的团队名称, GSQ TEAM.
现在申请投票啊.
团队的中文名称: 搞事情团队
团队的英文名称: GSQ TEAM
@zhuwannian @qiuyuhome @hufangfang1 @hhyun @phpdump 如果一个小团队的用的docker,是不是还需要一个专有的docker账号,大家伙是从一个docker账户中拉取相同的环境
为了统一开发环境,是不是需要先在docker里安装一个linux镜像,之后再在这个镜像中安装nginx/php/mysql/redis的容器,
镜像,容器,仓库,这三个概念大家都是如何去区别的
我们共同确定开发周期, 共同确定里程碑.
共同开发同一个项目, 每个人在自己的分支开发, 共同开发同样功能的东西, 开发过程中可以共同讨论, 每个模块开发完后, 可以共同讨论开发经验, 比较一下每个人开发的优缺点, 共同进步.
这样做的目的:
因为开发的内容是一样的. 每个人的项目都有属于自己的开发经验. 最大化的把自己的开发经验体现出来, 别人能够了解到. 遇到问题了. 也方便讨论.
如果每个人开发不通的模块, 则讨论的人都没有.
对比一下. 大家都想想, 哪种方式好一写.
举例: 我们做注册登录功能, 则每个人都做这个功能, 做完以后, 大家共享代码, 然后讨论. 合并为一个最终的最优代码.
2018-03-22, 晚上9点.
2018-03-12 至 2018-03-14 三天时间
整体性的初步了解 docker, 对 docker 有初步的认识, 找出 docker 中难点及知识点供后续学习做准备.
做好博客记录, 列出 docker 中的知识点及难点, 且规划处每个知识点的学习时间.
2018-03-15日, 晚上大概9点左右. 一起探讨总结.
https://octowhale.gitbooks.io/doc2cn_docker/content/
https://yeasy.gitbooks.io/docker_practice/content/install/mac.html
https://github.com/twang2218/docker-lnmp
https://github.com/yeszao/dnmp
学习过程中, 有好的资源或者教程, 共享出来.
[2018-04-10 20:16:09]
monolog 中, 可以注册为全局.
$this->logger = new Logger('spider');
Registry::addLogger($this->logger);
然后可以在任何地方直接使用.
Registry::spider()->error('push 到队列失败.');
我不理解. 我去查看了 Registry
这个类的代码. 如下.
<?php
/*
* This file is part of the Monolog package.
*
* (c) Jordi Boggiano <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Monolog;
use InvalidArgumentException;
/**
* Monolog log registry
*
* Allows to get `Logger` instances in the global scope
* via static method calls on this class.
*
* <code>
* $application = new Monolog\Logger('application');
* $api = new Monolog\Logger('api');
*
* Monolog\Registry::addLogger($application);
* Monolog\Registry::addLogger($api);
*
* function testLogger()
* {
* Monolog\Registry::api()->addError('Sent to $api Logger instance');
* Monolog\Registry::application()->addError('Sent to $application Logger instance');
* }
* </code>
*
* @author Tomas Tatarko <[email protected]>
*/
class Registry
{
/**
* List of all loggers in the registry (by named indexes)
*
* @var Logger[]
*/
private static $loggers = array();
/**
* Adds new logging channel to the registry
*
* @param Logger $logger Instance of the logging channel
* @param string|null $name Name of the logging channel ($logger->getName() by default)
* @param bool $overwrite Overwrite instance in the registry if the given name already exists?
* @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists
*/
public static function addLogger(Logger $logger, $name = null, $overwrite = false)
{
$name = $name ?: $logger->getName();
if (isset(self::$loggers[$name]) && !$overwrite) {
throw new InvalidArgumentException('Logger with the given name already exists');
}
self::$loggers[$name] = $logger;
}
/**
* Checks if such logging channel exists by name or instance
*
* @param string|Logger $logger Name or logger instance
*/
public static function hasLogger($logger)
{
if ($logger instanceof Logger) {
$index = array_search($logger, self::$loggers, true);
return false !== $index;
} else {
return isset(self::$loggers[$logger]);
}
}
/**
* Removes instance from registry by name or instance
*
* @param string|Logger $logger Name or logger instance
*/
public static function removeLogger($logger)
{
if ($logger instanceof Logger) {
if (false !== ($idx = array_search($logger, self::$loggers, true))) {
unset(self::$loggers[$idx]);
}
} else {
unset(self::$loggers[$logger]);
}
}
/**
* Clears the registry
*/
public static function clear()
{
self::$loggers = array();
}
/**
* Gets Logger instance from the registry
*
* @param string $name Name of the requested Logger instance
* @throws \InvalidArgumentException If named Logger instance is not in the registry
* @return Logger Requested instance of Logger
*/
public static function getInstance($name)
{
if (!isset(self::$loggers[$name])) {
throw new InvalidArgumentException(sprintf('Requested "%s" logger instance is not in the registry', $name));
}
return self::$loggers[$name];
}
/**
* Gets Logger instance from the registry via static method call
*
* @param string $name Name of the requested Logger instance
* @param array $arguments Arguments passed to static method call
* @throws \InvalidArgumentException If named Logger instance is not in the registry
* @return Logger Requested instance of Logger
*/
public static function __callStatic($name, $arguments)
{
return self::getInstance($name);
}
}
为什么使用 Registry::spider()->error('push 到队列失败.');
这样的语句, 就可以使用. 根本没有 spider()
这个方法. 这个是如何实现的?
不熟悉 markdown 的, 要了解一下. 以后的文档和 github 会经常用到.
代码高亮的 markdown 语法
shell 输出
```shell
[root@iz2zej8sniw3fljoetkyf6z lib]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 4760dc956b2d 2 days ago 107MB
php 7.2-fpm 7e3349fbb49c 2 days ago 367MB
mysql latest 5195076672a7 3 days ago 371MB
redis 4.0.8-alpine c27f56585938 3 days ago 27.7MB
khs1994/php-fpm 7.2.3-alpine3.7 45f54b648ad3 7 days ago 155MB
phpmyadmin/phpmyadmin latest 328692480804 11 days ago 166MB
khs1994/nginx 1.13.9-tls1.3-stretch f95aec4e68c8 3 weeks ago 110MB
nginx alpine 537527661905 3 weeks ago 17.9MB
mysql 8.0.3 00400babc1b7 3 weeks ago 343MB
```
显示为:
[root@iz2zej8sniw3fljoetkyf6z lib]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 4760dc956b2d 2 days ago 107MB
php 7.2-fpm 7e3349fbb49c 2 days ago 367MB
mysql latest 5195076672a7 3 days ago 371MB
redis 4.0.8-alpine c27f56585938 3 days ago 27.7MB
khs1994/php-fpm 7.2.3-alpine3.7 45f54b648ad3 7 days ago 155MB
phpmyadmin/phpmyadmin latest 328692480804 11 days ago 166MB
khs1994/nginx 1.13.9-tls1.3-stretch f95aec4e68c8 3 weeks ago 110MB
nginx alpine 537527661905 3 weeks ago 17.9MB
mysql 8.0.3 00400babc1b7 3 weeks ago 343MB
项目要活跃起来. 别人发表的问题, 要给回复. 这样发表者才能知道你已经看过了.
切记. 这个项目是给自己做的. 要维护好项目的活跃状况.
docker 搭建的 lnmp 环境, 在 phpstorm 中如何设置呢?
xdebug 如何设置?
我没设置成功, 不知道是哪里有问题. 谁设置成功了发一下成功的案例呗. 最好是每步都截个图.
共同进步, 协同学习的方案, 跟项目无关, 是指大家共同拟定一个小的计划, 然后大家在指定的时间内, 学习了解新的技术知识点, 最后在把自己的理解共享出来. 达到协同学习的目的.
大家都学习一下 laravel
的源码, 以及 laravel
和 ThinkPHP
区别. 学习时间为5天, 5天后, 晚上9点到10点之间语音讨论遇到的问题和交流经验.
写技术博客或者笔记.
*推荐都弄一个 gitpage
的免费博客. *
在较短的时间内, 了解新的知识点.
在一个团队内, 就应该充分的利用团队的优势, 人多力量大, 共同学习比自己一个人研究更效率.
大家还有什么好的方案. 留言讨论吧.
给咱们的项目起个名称
每个人都想想. 这个不急.
test
<?php
/**
* arrayaccess 官方接口测试.
* User: qiuyu
* Date: 2018/4/7
* Time: 下午3:06
*/
namespace Test;
class Obj implements \ArrayAccess
{
private $container = array();
public function __construct()
{
$this->container = array(
"one" => 1,
"two" => 2,
"three" => 3,
);
}
public function offsetSet($offset, $value)
{
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->container[$offset] = $value;
}
}
public function offsetExists($offset)
{
return isset($this->container[$offset]);
}
public function offsetUnset($offset)
{
unset($this->container[$offset]);
}
public function offsetGet($offset)
{
return isset($this->container[$offset]) ? $this->container[$offset] : null;
}
}
$obj = new Obj;
var_dump(isset($obj["two"]));
var_dump($obj["two"]);
unset($obj["two"]);
var_dump(isset($obj["two"]));
$obj["two"] = "A value";
var_dump($obj["two"]);
$obj[] = 'Append 1';
$obj[] = 'Append 2';
$obj[] = 'Append 3';
print_r($obj);
为什么会可以使用数组的形式调用?
[2018-04-06 14:42:18]
2018/4/6
下午1:43 PHP Code Sniffer
phpcs: Can not correctly run the tool with parameters:
/private/var/folders/gt/_7v3n94501x5cp5rdgbddq0w0000gn/T/phpcs_temp.tmp/Application/Deal/Controller/ListController.class.php
--standard=PSR2
--encoding=utf-8
--report=xml
Possible tool process hangup after 5 sec.
Exclude ListController.class.php from PHP Code Sniffer analysis.
这个应该如何处理?
[2018-04-06 14:42:18]
2018/4/6
下午1:43 PHP Code Sniffer
phpcs: Can not correctly run the tool with parameters:
/private/var/folders/gt/_7v3n94501x5cp5rdgbddq0w0000gn/T/phpcs_temp.tmp/Application/Deal/Controller/ListController.class.php
--standard=PSR2
--encoding=utf-8
--report=xml
Possible tool process hangup after 5 sec.
Exclude ListController.class.php from PHP Code Sniffer analysis.
这个应该如何处理?
[root@iz2zej8sniw3fljoetkyf6z lib]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 4760dc956b2d 2 days ago 107MB
php 7.2-fpm 7e3349fbb49c 2 days ago 367MB
mysql latest 5195076672a7 3 days ago 371MB
redis 4.0.8-alpine c27f56585938 3 days ago 27.7MB
khs1994/php-fpm 7.2.3-alpine3.7 45f54b648ad3 7 days ago 155MB
phpmyadmin/phpmyadmin latest 328692480804 11 days ago 166MB
khs1994/nginx 1.13.9-tls1.3-stretch f95aec4e68c8 3 weeks ago 110MB
nginx alpine 537527661905 3 weeks ago 17.9MB
mysql 8.0.3 00400babc1b7 3 weeks ago 343MB
[root@iz2zej8sniw3fljoetkyf6z lib]# docker rmi $(docker images -q)
Error: No such image: 4760dc956b2d
Error: No such image: 7e3349fbb49c
Error: No such image: 5195076672a7
Error: No such image: c27f56585938
Error: No such image: 45f54b648ad3
Error: No such image: 328692480804
Error: No such image: f95aec4e68c8
Error: No such image: 537527661905
Error: No such image: 00400babc1b7
[root@iz2zej8sniw3fljoetkyf6z lib]#
要看源码.
从测试机发布代码到生产机, 是怎么发布的?
配置不同, 是如何处理的?
我把所有的镜像全部删除,重新运行./lnmp-docker.sh development
就会生成重复的镜像
[root@iz2zej8sniw3fljoetkyf6z lnmp]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 4.0.8-alpine c27f56585938 3 days ago 27.7MB
redis 4.0.8-alpine c27f56585938 3 days ago 27.7MB
khs1994/php-fpm 7.2.3-alpine3.7 45f54b648ad3 7 days ago 155MB
khs1994/php-fpm 7.2.3-alpine3.7 45f54b648ad3 7 days ago 155MB
phpmyadmin/phpmyadmin latest 328692480804 11 days ago 166MB
phpmyadmin/phpmyadmin latest 328692480804 11 days ago 166MB
khs1994/nginx 1.13.9-tls1.3-stretch f95aec4e68c8 3 weeks ago 110MB
khs1994/nginx 1.13.9-tls1.3-stretch f95aec4e68c8 3 weeks ago 110MB
mysql 8.0.3 00400babc1b7 4 weeks ago 343MB
mysql 8.0.3 00400babc1b7 4 weeks ago 343MB
[root@iz2zej8sniw3fljoetkyf6z lnmp]#
虽然不影响使用但是不知道什么原因造成的,我在另一台服务器不会有这个问题
[2018-04-04 10:12:27]
test issue template
Is show comment?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.