mapleboard on the table

我是楓葉板社群部落格板主Jonas~歡迎大家多發文、多回應,有任何問題歡迎寫信給我Jonas。                                               目前部落格網站有2個更動:1.草稿位置更改為博主首頁之內2.增加Emoji按鈕(按鈕的最左上角)。請大家留意並多加利用~    

Man annoyed stares at his laptop

Photo by bruce mars from Pexels

怎麼辦?為什麼我的網站更新完就壞掉了呢?
        沒關係,我覺得我的同事對我有滿滿的善意 wink

同學不用緊張,我們先回顧更新過程發生了什麼事吧!

想知道Linux如何複製隱藏檔請直接看最後一段吧~

 

Drupal Core更新

參考官網的Updating Drupal 8,我們這次使用Update core manually via CLI

一般來說,跟著這篇文章的步驟操作應該沒有什麼問題。
1. 開啟維護模式
2. 刪除 core vendor 資料夾,與所有root層的檔案
3. 如果有修改htaccess, composer.json或robots.txt要備份
4. 有時候更新會修改default.settings.php,這時候要備份原本的設定資料(settings.php),然後複製新版檔案貼上並填入設定資料
5. 複製所有新版drupal檔案與資料夾貼上,因為我們客製模組還有網站files並不存在於我們下載的新版drupal內,所以不會被動到
6. 將3.的備份檔案還原
7. http://www.example.com/update.php,如果沒有辦法以admin登入的話要去settings.php暫時把 $settings['update_free_access'] 打開
8. 以admin登入察看Status report,順利的話就關掉維護模式

 

更新完網站壞掉怎麼辦

原本開開心心更新完網站後,竟然發現除了首頁都 404 not found

(OS:不!我到底做了什麼!Drupal 為什麼要這樣對我!)
(謎之聲:不要再學Mark老師了,你看你裝不下去了吧,Mark老師的文筆不是你這種蔡逼八可以模仿的)
(OS:好der,拜託不要跟大家說我連文章封面圖片都是學Mark老師用同一位攝影師的。)

404 not found 代表說找不到頁面,
也就是說我們的瀏覽器向網路上的這個位置發出請求(request)時,找不到我們想要的網頁。
但是我們Server Apache的設定都沒有調整,Server主機也沒有壞掉,中華電信也沒有壞掉,檔案位置也沒有改變,
為什麼原本可以找到的網頁現在卻不行了呢?

對除了首頁其他頁面都404這個問題google一下後,
我們發現這應該是 /.htaccess 這個檔案出了狀況。
引用 Htaccess 這個模組的介紹:

Drupal tries to provide a one size fits all htaccess for Apache webservers, but this goal is increasingly difficult. This module allows the webmaster to set specific options.

也就是說Drupal對自己整個網站的apache設定可以透過.htaccess來管理,
一般來說照著官網的安裝流程去設定apache時預設的.htaccess應該沒什麼問題,
不過如果你的server有什麼特殊權限設定的話,就需要手動來修改一下這個檔案了。

可是我們以前都照預設的安裝方法沒有問題,這次更新Drupal也沒有修改這個檔案,
到底???

讓人震驚的是,當我們想要去看看我們的.htaccess檔案時,
不見了,沒有了,消失了!

 

Linux如何複製隱藏檔

原來當我們在複製最新的Drupal到我們的網站資料夾時,

cp -r /drupal_8.x.y/ /your/site/folder/

結果會變成

/your/site/folder/drupal_8.x.y

如此你還要把drupal_8.x.y內的檔案往上mv一層然後刪掉空的drupal_8.x.y
所以我們可能會加上*說要資料夾下所有檔案到指定資料夾下

cp -r /drupal_8.x.y/* /your/site/folder/

不過這樣會有一個問題是,file system預設*是不讀取.開頭的檔案,有一種解法是去修改這項設定,不過其實我們可以很簡單的不用*改成.就解決了!(指定從.開頭開始讀取)

cp -r /drupal_8.x.y/. /your/site/folder/

 




https://www.youtube.com/watch?v=WB5-s-mJKPw

All Photos from YouTube

---------------------------------------------------------------

這裡不只賣日常生活用品,還提供消煩解憂的諮詢。

困惑不安的你,糾結不已的你,歡迎來信討論心中的問題...

 

如果有一個地方,可以回應我們的煩惱……你願意說出來嗎?   (以下有雷慎入)

https://www.youtube.com/watch?v=WB5-s-mJKPw

(Photo from YouTube)

只要在晚上把自己的煩惱信放入雜貨店的鐵捲門,隔天可以在門後的牛奶箱收到回信。

雜貨店老闆從解決小學生的問題開始,培養了鼓勵人的興趣,常在深夜思索如何回應寄信者的問題。

音樂夢還沒實現,面臨父親身體狀況直下,掙扎著是否要放棄夢想來經營家裡的魚店...

為了讓養父母能還清貸款,在酒店當有錢人的情婦…但總覺得做不太來...該怎麼辦..?

沒有感情結果的情況下懷了孩子,我是否要把這個孩子生下來...?

https://www.youtube.com/watch?v=WB5-s-mJKPw

(Photo from YouTube)

『回信,只是希望那個人能得到幸福...』

 

30年後,雜貨店收店的同一天,三個少年意外闖入已經廢棄的雜貨店空屋。

這些信件紛紛投入雜貨店裡,讓他們意外的與30年前的人產生連結。

三人剛做完壞事,本來是打算在雜貨店老屋躲過警察。閱讀到這些信件,卻忍不住想回信給寫信的人,就好像看船要沉了,不能忍受自己在旁袖手旁觀。

即使現在失敗及迷惘的我,也能回應對方什麼好的建議嗎?收到第一封回信後,發現原來自己也可以使別人幸福。一封封看似簡短嚴厲的信件,卻反應出少年們設身處地的溫柔叮嚀,彷彿回到雜貨店老爺爺般糾結的思索...

『會不會有人因為我的建議而沒有過得更好...?』

https://www.youtube.com/watch?v=WB5-s-mJKPw

(Photo from YouTube)

美麗的誤會,串起了這一串人事物的奇遇。透過簡單的信紙與文字,反而更能反映出我們的共通性:煩惱、迷惘、探索人生的意義、期待對方幸福...等。

一次又一次的解憂過程裡,看似燒己煩惱之薪,卻也間接的湧現出迷惘裡的勇氣,與改變的動力。

看似很小的一個解憂舉動,卻改變了對方的一生。如果不是真心遇上真心,又何能真正在彼此的生命中產生出影響呢...?

『我的回答之所以發揮了作用,原因不是別的,是因為他們自己很努力...

如果自己不想積極認真地生活,不管得到什麼樣的回答都沒用。』

收到來自於30年後的感謝信,雜貨店爺爺很高興,也很感動。原來這些年來的努力都沒有白費...即使30年後,也有人繼續傳承著...




Installing Symfony should be easy though

Photo by bruce mars from Pexels

我按照官網說明將symfony安裝完了,但是他不會動。我覺得這個世界對我有著滿滿的惡意angry

 

同學請冷靜 我們這次就來看看symfony安裝時會出現哪些問題吧

0. 軟體安裝需求

由於目前最新版本為4.1,但4.0以後php要求為7.1以上,而debian stretch 目前php只支援到7.0,所以大家可以依照自己os安裝的php版本來決定要安裝那一版的symfony,簡單整理如下:

debian stretch (php7.0)  =>  symfony 3.4

debian buster (>php7.1) => symfony 4.1

當然如果你會自己compile php7.1 library 就不在此限制範圍內smiley

 

1.安裝symfony前置作業

因為在安裝symfony時會經常用到兩個指令composer 以及 symfony,所以就先來安裝這兩個吧

symfony︰

用途說明︰使用symfony 2或3 建構網站時官方建議的安裝工具

安裝詳細介紹︰https://symfony.com/doc/3.4/setup.html


 sudo mkdir -p /usr/local/bin
 sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
 sudo chmod a+x /usr/local/bin/symfony

這邊可能又會遇到一個問題就是curl指令找不到 ><

如果發生這個問題,請執行以下指令後,繼續完成前面的安裝步驟

sudo apt install curl

composer :

用途說明︰基本上在製作網站常常會使用到現成的library而library有時可能會有版本過舊或是和現有library衝突的情況發生,這個composer就是有能力可以來處理這些麻煩的問題,讓你可以放心使用安裝library而不怕彼此衝突

安裝詳細介紹︰https://getcomposer.org/download/

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

此處程式碼為安裝說明用。請勿使用此處的程式碼安裝,因為hash_file比對碼有可能更動,詳細請至composer 官網查看

這邊完成以後會看到有一個 composer.phar 檔案 但因為還沒安裝到 /usr/local/bin 所以目前還沒辦法像symfony安裝完就可以在console中打symfony就可以直接執行,所以這邊提供兩種解法︰

1.把上面第三行換成

php composer-setup.php --install-dir=usr/local/bin --filename=composer

2.參考symfony安裝方法將目前的composer.phar安裝到  /usr/local/bin

 sudo mv composer.phar /usr/local/bin/composer
 sudo chmod a+x /usr/local/bin/composer

這邊有注意到的人會發現為什麼我們要把composer.phar 改名成 composer?

因為之後你在看symfony 或是其他網頁教學,很少有機會看到教學文章中提到 composer.phar 這個指令,大多數時間你只會看到composer,而他們其實代表的視同一個指令 ,所以為了後續操作方便以及學習更容易,改名是有需要的。

 

2. My first symfony project 

這一步就是關鍵所在,後來我在官網上看了一下發現其實有兩種作法

4.0 以前 筆者之前在建立新網站是用以下方法

https://symfony.com/doc/3.4/setup.html

由於目前已更新到4.1所以預設會是以4.1來建立新網站,這邊請加上symfony版本數(3.4)

symfony new my-project 3.4

如果不想透過symfony安裝,也可以使用以下方法

composer create-project symfony/framework-standard-edition my-project "3.4.*"

4.0 以後 官網似乎鼓勵使用 composer create-project 方式來架構新網站

https://symfony.com/doc/current/setup.html

composer create-project symfony/website-skeleton my-project

好笑的是在download,4.0以後官方建議以下方式建立新網站

https://symfony.com/download

composer create-project symfony/skeleton my_project

所以這樣一共就有四種安裝方式 crying

其中差異我們在下一段再談

先講講第一個建立的網站(使用4.0以前建立方法)如何使用內建php-server來看結果

 cd my-project/
 php bin/console server:run

這時候console會提示說網頁可以到哪邊觀看

將該網址貼到瀏覽器後就可以看到我們的第一頁

first page shown after project created

至於如何製作第一頁我們就留到下次再做介紹吧。

 

3. 差異比較

symfony new test_1 3.4

這個安裝基本上照說明進行就可以順利完成

 Preparing project...

 ✔  Symfony 3.4.6 was successfully installed. Now you can:

    * Change your current directory to /home/XXX/Desktop/test/test_1

    * Configure your application in app/config/parameters.yml file.

    * Run your application:
        1. Execute the php bin/console server:start command.
        2. Browse to the http://localhost:8000 URL.

    * Read the documentation at https://symfony.com/doc


composer create-project symfony/framework-standard-edition test_2 "3.4.*"

這個安裝基本上照說明進行就可以順利完成

Installing symfony/framework-standard-edition (v3.4.6)
  - Installing symfony/framework-standard-edition (v3.4.6): Downloading (100%)         
Created project in test_2
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 38 installs, 0 updates, 0 removals
  - Installing doctrine/lexer (v1.0.1): Loading from cache
  - Installing doctrine/annotations (v1.2.7): Downloading (100%)         
  - Installing twig/twig (v1.35.2): Downloading (100%)         
  - Installing paragonie/random_compat (v2.0.11): Loading from cache
  - Installing symfony/polyfill-php70 (v1.7.0): Downloading (100%)         
  - Installing symfony/polyfill-util (v1.7.0): Downloading (100%)         
  - Installing symfony/polyfill-php56 (v1.7.0): Downloading (100%)         
  - Installing symfony/polyfill-mbstring (v1.7.0): Loading from cache
  - Installing symfony/symfony (v3.4.6): Downloading (100%)         
  - Installing symfony/polyfill-intl-icu (v1.7.0): Loading from cache
  - Installing symfony/polyfill-apcu (v1.7.0): Loading from cache
  - Installing psr/simple-cache (1.0.1): Downloading (100%)         
  - Installing psr/log (1.0.2): Loading from cache
  - Installing psr/link (1.0.0): Loading from cache
  - Installing psr/container (1.0.0): Loading from cache
  - Installing psr/cache (1.0.1): Loading from cache
  - Installing fig/link-util (1.0.0): Loading from cache
  - Installing doctrine/inflector (v1.1.0): Downloading (100%)         
  - Installing doctrine/collections (v1.3.0): Downloading (100%)         
  - Installing doctrine/cache (v1.6.2): Loading from cache
  - Installing doctrine/common (v2.6.2): Downloading (100%)         
  - Installing jdorn/sql-formatter (v1.2.17): Loading from cache
  - Installing doctrine/doctrine-cache-bundle (1.3.2): Loading from cache
  - Installing doctrine/dbal (v2.5.13): Loading from cache
  - Installing doctrine/doctrine-bundle (1.8.1): Loading from cache
  - Installing doctrine/instantiator (1.0.5): Loading from cache
  - Installing doctrine/orm (v2.5.14): Loading from cache
  - Installing incenteev/composer-parameter-handler (v2.1.3): Downloading (100%)         
  - Installing composer/ca-bundle (1.1.0): Loading from cache
  - Installing sensiolabs/security-checker (v4.1.8): Downloading (100%)         
  - Installing sensio/distribution-bundle (v5.0.21): Loading from cache
  - Installing sensio/framework-extra-bundle (v5.1.6): Loading from cache
  - Installing monolog/monolog (1.23.0): Loading from cache
  - Installing symfony/monolog-bundle (v3.2.0): Downloading (100%)         
  - Installing swiftmailer/swiftmailer (v5.4.9): Downloading (100%)         
  - Installing symfony/swiftmailer-bundle (v2.6.7): Loading from cache
  - Installing sensio/generator-bundle (v3.1.7): Loading from cache
  - Installing symfony/phpunit-bridge (v3.4.6): Downloading (100%)         
paragonie/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)
symfony/polyfill-intl-icu suggests installing ext-intl (For best performance)
doctrine/doctrine-cache-bundle suggests installing symfony/security-acl (For using this bundle to cache ACLs)
sensio/framework-extra-bundle suggests installing symfony/psr-http-message-bridge (To use the PSR-7 converters)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
symfony/phpunit-bridge suggests installing ext-zip (Zip support is required when using bin/simple-phpunit)
Generating autoload files
> Incenteev\ParameterHandler\ScriptHandler::buildParameters
Creating the "app/config/parameters.yml" file
Some parameters are missing. Please provide them.
database_host (127.0.0.1): 
database_port (null): 
database_name (symfony): 
database_user (root): 
database_password (null): 
mailer_transport (smtp): 
mailer_host (127.0.0.1): 
mailer_user (null): 
mailer_password (null): 
secret (ThisTokenIsNotSoSecretChangeIt): 
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache

 // Clearing the cache for the dev environment with debug                       
 // true                                                                        

                                                                                
 [OK] Cache for the "dev" environment (debug=true) was successfully cleared.    
                                                                                

> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets

 Trying to install assets as relative symbolic links.

                                                                                
 [OK] No assets were provided by any bundle.                                    
                                                                                

> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installRequirementsFile
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::prepareDeploymentTarget

composer create-project symfony/website-skeleton test_3 

這次資料夾結構就有些不同

1.沒有app

2.沒有web

而至於首頁無法顯示是因為

1. 不存在對應的頁面 (之前有appbundle/defaultcontroller.php負責顯示此頁面,這次沒有安裝這個檔案,所以自然是連不上此頁面)

同時也可以透過 php bin/console debug:router 觀察到並不存在此路徑

Installing symfony/website-skeleton (v3.4.4)
  - Installing symfony/website-skeleton (v3.4.4): Loading from cache
Created project in test_3
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 89 installs, 0 updates, 0 removals
  - Installing ocramius/package-versions (1.2.0): Loading from cache
  - Installing symfony/flex (v1.0.70): Loading from cache

Prefetching 32 packages 
  - Downloading (100%)

  - Installing doctrine/lexer (v1.0.1): Loading from cache
  - Installing doctrine/inflector (v1.2.0): Loading from cache
  - Installing doctrine/collections (v1.4.0): Loading from cache
  - Installing doctrine/cache (v1.6.2): Loading from cache
  - Installing doctrine/annotations (v1.4.0): Loading from cache
  - Installing doctrine/common (v2.7.3): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.7.0): Loading from cache
  - Installing symfony/yaml (v3.4.6): Loading from cache
  - Installing symfony/webpack-encore-pack (v1.0.2): Loading from cache
  - Installing psr/link (1.0.0): Loading from cache
  - Installing fig/link-util (1.0.0): Loading from cache
  - Installing symfony/web-link (v3.4.6): Loading from cache
  - Installing symfony/filesystem (v3.4.6): Loading from cache
  - Installing symfony/config (v3.4.6): Loading from cache
  - Installing symfony/http-foundation (v3.4.6): Loading from cache
  - Installing symfony/event-dispatcher (v3.4.6): Loading from cache
  - Installing psr/log (1.0.2): Loading from cache
  - Installing symfony/debug (v3.4.6): Loading from cache
  - Installing symfony/http-kernel (v3.4.6): Loading from cache
  - Installing psr/container (1.0.0): Loading from cache
  - Installing symfony/dependency-injection (v3.4.6): Loading from cache
  - Installing egulias/email-validator (2.1.3): Loading from cache
  - Installing swiftmailer/swiftmailer (v6.0.2): Loading from cache
  - Installing symfony/swiftmailer-bundle (v3.2.0): Loading from cache
  - Installing symfony/translation (v3.4.6): Loading from cache
  - Installing symfony/validator (v3.4.6): Loading from cache
  - Installing symfony/serializer (v3.4.6): Loading from cache
  - Installing symfony/inflector (v3.4.6): Loading from cache
  - Installing symfony/property-info (v3.4.6): Loading from cache
  - Installing symfony/property-access (v3.4.6): Loading from cache
  - Installing psr/simple-cache (1.0.1): Loading from cache
  - Installing psr/cache (1.0.1): Loading from cache
  - Installing symfony/polyfill-apcu (v1.7.0): Loading from cache
  - Installing symfony/cache (v3.4.6): Loading from cache
  - Installing webmozart/assert (1.3.0): Loading from cache
  - Installing phpdocumentor/reflection-common (1.0.1): Loading from cache
  - Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
  - Installing phpdocumentor/reflection-docblock (4.3.0): Loading from cache
  - Installing symfony/serializer-pack (v1.0.1): Loading from cache
  - Installing symfony/security (v3.4.6): Loading from cache
  - Installing symfony/security-bundle (v3.4.6): Loading from cache
  - Installing symfony/process (v3.4.6): Loading from cache
  - Installing monolog/monolog (1.23.0): Loading from cache
  - Installing symfony/monolog-bridge (v3.4.6): Loading from cache
  - Installing symfony/monolog-bundle (v3.2.0): Loading from cache
  - Installing symfony/routing (v3.4.6): Loading from cache
  - Installing symfony/finder (v3.4.6): Loading from cache
  - Installing symfony/class-loader (v3.4.6): Loading from cache
  - Installing symfony/framework-bundle (v3.4.6): Loading from cache
  - Installing symfony/console (v3.4.6): Loading from cache
  - Installing zendframework/zend-eventmanager (3.2.0): Loading from cache
  - Installing zendframework/zend-code (3.1.0): Loading from cache
  - Installing ocramius/proxy-manager (2.0.4): Loading from cache
  - Installing doctrine/dbal (v2.5.13): Loading from cache
  - Installing doctrine/migrations (v1.5.0): Loading from cache
  - Installing symfony/doctrine-bridge (v3.4.6): Loading from cache
  - Installing doctrine/doctrine-cache-bundle (1.3.2): Loading from cache
  - Installing jdorn/sql-formatter (v1.2.17): Loading from cache
  - Installing doctrine/doctrine-bundle (1.8.1): Loading from cache
  - Installing doctrine/doctrine-migrations-bundle (v1.3.1): Loading from cache
  - Installing doctrine/instantiator (1.0.5): Loading from cache
  - Installing doctrine/orm (v2.5.14): Loading from cache
  - Installing symfony/orm-pack (v1.0.5): Loading from cache
  - Installing symfony/options-resolver (v3.4.6): Loading from cache
  - Installing symfony/polyfill-intl-icu (v1.7.0): Loading from cache
  - Installing symfony/intl (v3.4.6): Loading from cache
  - Installing symfony/form (v3.4.6): Loading from cache
  - Installing symfony/expression-language (v3.4.6): Loading from cache
  - Installing symfony/var-dumper (v3.4.6): Loading from cache
  - Installing symfony/phpunit-bridge (v3.4.6): Loading from cache
  - Installing twig/twig (v2.4.6): Loading from cache
  - Installing symfony/twig-bridge (v3.4.6): Loading from cache
  - Installing symfony/web-profiler-bundle (v3.4.6): Loading from cache
  - Installing symfony/twig-bundle (v3.4.6): Loading from cache
  - Installing symfony/stopwatch (v3.4.6): Loading from cache
  - Installing symfony/profiler-pack (v1.0.3): Loading from cache
  - Installing easycorp/easy-log-handler (v1.0.4): Loading from cache
  - Installing symfony/debug-bundle (v3.4.6): Loading from cache
  - Installing symfony/debug-pack (v1.0.4): Loading from cache
  - Installing symfony/asset (v3.4.6): Loading from cache
  - Installing sensio/framework-extra-bundle (v5.1.6): Loading from cache
  - Installing symfony/dom-crawler (v3.4.6): Loading from cache
  - Installing symfony/browser-kit (v3.4.6): Loading from cache
  - Installing symfony/css-selector (v3.4.6): Loading from cache
  - Installing symfony/dotenv (v3.4.6): Loading from cache
  - Installing symfony/maker-bundle (v1.1.1): Loading from cache
Writing lock file
Generating autoload files
ocramius/package-versions:  Generating version class...
ocramius/package-versions: ...done generating version class
Symfony operations: 20 recipes (a4bdff63f5fbfdd018d5869c7cceef35)
  - Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/framework-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring doctrine/annotations (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/webpack-encore-pack (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/swiftmailer-bundle (>=2.5): From github.com/symfony/recipes:master
  - Configuring symfony/translation (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/security-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/monolog-bundle (>=3.1): From github.com/symfony/recipes:master
  - Configuring symfony/routing (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/console (>=3.3): From github.com/symfony/recipes:master
  - Configuring doctrine/doctrine-cache-bundle (>=1.3.2): From auto-generated recipe
  - Configuring doctrine/doctrine-bundle (>=1.6): From github.com/symfony/recipes:master
  - Configuring doctrine/doctrine-migrations-bundle (>=1.2): From github.com/symfony/recipes:master
  - Configuring symfony/phpunit-bridge (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/web-profiler-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/twig-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring easycorp/easy-log-handler (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/debug-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring sensio/framework-extra-bundle (>=4.0): From github.com/symfony/recipes:master
  - Configuring symfony/maker-bundle (>=1.0): From github.com/symfony/recipes:master
Executing script cache:clear [OK]
Executing script assets:install --symlink --relative public [OK]

Some files may have been created or updated to configure your new packages.
Please review, edit and commit them: these files are yours.

              
 What's next? 
              

  * Run your application:
    1. Change to the project directory
    2. Execute the php -S 127.0.0.1:8000 -t public command;
    3. Browse to the http://localhost:8000/ URL.

       Quit the server with CTRL-C.
       Run composer require server --dev for a better web server.

  * Read the documentation at https://symfony.com/doc

                        
 Database Configuration 
                        

  * Modify your DATABASE_URL config in .env

  * Configure the driver (mysql) and
    server_version (5.7) in config/packages/doctrine.yaml

              
 How to test? 
              

  * Write test cases in the tests/ folder
  * Run php bin/phpunit

 

composer create-project symfony/skeleton test_4 

主要vendor內容只留下最精簡內容,應該是給進階使用者開發用
 

Installing symfony/skeleton (v3.4.5)
  - Installing symfony/skeleton (v3.4.5): Loading from cache
Created project in test_4
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 23 installs, 0 updates, 0 removals
  - Installing symfony/flex (v1.0.70): Loading from cache
  - Installing psr/log (1.0.2): Loading from cache
  - Installing symfony/debug (v3.4.6): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.7.0): Loading from cache
  - Installing symfony/console (v3.4.6): Loading from cache
  - Installing symfony/routing (v3.4.6): Loading from cache
  - Installing symfony/yaml (v3.4.6): Loading from cache
  - Installing symfony/framework-bundle (v3.4.6): Loading from cache
  - Installing symfony/http-foundation (v3.4.6): Loading from cache
  - Installing symfony/event-dispatcher (v3.4.6): Loading from cache
  - Installing symfony/http-kernel (v3.4.6): Loading from cache
  - Installing symfony/finder (v3.4.6): Loading from cache
  - Installing symfony/filesystem (v3.4.6): Loading from cache
  - Installing psr/container (1.0.0): Loading from cache
  - Installing symfony/dependency-injection (v3.4.6): Loading from cache
  - Installing symfony/config (v3.4.6): Loading from cache
  - Installing symfony/class-loader (v3.4.6): Loading from cache
  - Installing psr/simple-cache (1.0.1): Loading from cache
  - Installing psr/cache (1.0.1): Loading from cache
  - Installing symfony/polyfill-apcu (v1.7.0): Loading from cache
  - Installing symfony/cache (v3.4.6): Loading from cache
  - Installing symfony/dotenv (v3.4.6): Loading from cache
Writing lock file
Generating autoload files
Symfony operations: 4 recipes (0ddd9f25a0fe7f6017a9646bccfc603b)
  - Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/framework-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/console (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/routing (>=3.3): From github.com/symfony/recipes:master
Executing script cache:clear [OK]
Executing script assets:install --symlink --relative public [OK]

Some files may have been created or updated to configure your new packages.
Please review, edit and commit them: these files are yours.

              
 What's next? 
              

  * Run your application:
    1. Change to the project directory
    2. Execute the php -S 127.0.0.1:8000 -t public command;
    3. Browse to the http://localhost:8000/ URL.

       Quit the server with CTRL-C.
       Run composer require server --dev for a better web server.

  * Read the documentation at https://symfony.com/doc

 




MP130_prototype_board

大家一定很好奇怎麼用Blender,從無到有的3D圖是如何製作出來的,以楓葉板為例,取其一零件『六角銅柱與矽膠腳墊』來重點介紹製作流程。

 

1.建模︰add mesh 裡面的各種形狀的物件組合成你要製作的造型,運用Object Mode與Edit Mode來編輯『點、線、面』。

blog0131-03-modeing

 

2.Render渲染算圖之引擎模式選定(cycles Render-blender內建)
cycles


在3D軟體中是非常關鍵的一點,必須在你處理材質、光線前決定好,而blender目前有3種選項, 而我選用較新的技術cycles,雖然算圖時間偏中等速度,但是圖片的顏色與細緻度算是最好的。 不同的選擇,會影響呈現效果,一開始要先做好決定,否則到頭來你配好的光線與色彩,會因為選錯引擎而需要大幅調整每一個設定之數值。

不同引擎分析比較參考
http://www.blenderget.com/render-engine-comparison-cycles-vs-giants/

 

3.打光

環境顏色、亮度與Ambient Occlusion
world

 

燈光Lamp / Hemi
light

 

4.材質 Material

金屬質感模擬
m-glossy-02

m-glossy-01

矽利康 silicon質感模擬
m-slicon-02

m-slicon-01

材質模擬是蠻複雜處理效果,有一點像圖層混合的概念,以Node為主軸,由右到左連接處理,會因著環境或是打光影響效果,必須一邊Render一邊調整數質來慢慢微調出你要的效果,或者是可上網找設計好的材質數據參考,要有心裡準備因為每個設計者設定不同,只要有些許差異render出來就會有出入。

 

5.轉成圖片檔( .png)

render

 

6.影像處理

ps

可以運用GIMP或是PHOTOSHOP...等影像處理軟體,調整光線色調、亮度、對比度與銳利化,更貼近你所要呈現的效果,加強細節或是局部微調都非常方便。

 

以上Blender小教學完成,而楓葉板週邊零件『六角銅柱與矽膠腳墊』的成品正如火如荼地製造中,即將問市,敬請期待!

 

 




近來台灣地震頻繁,在此分享地震始發生時,我們應做什麼:

 

災害發生時,勿驚慌,冷靜判斷當下該如何行動。

眼:觀察周遭是否有易掉落或噴濺的物品,躲避之。

耳:聽是否有「碰、碰」的聲響,通常是建築物內部因地震被扭曲的情形,此時要小心可能發生大樓扭曲崩塌情形。

 

防災的幾點注意事項:

1.保護頭部、找堅固掩護:通常會躲在堅固的桌子下,如果附近沒有桌子可以找建築的主柱來依靠掩護。

2.避開掉落物、易碎物:凡是會滑動的東西都要小心。

 

根據統計,阪神大地震中,因為建物倒塌、物品撞擊、壓迫而死亡的人數有83%。
因此,我們的所在位置的建築是否牢固以及所在處是否會有物品傾斜撞擊成了存活與否的因素。

 

幾個場所的注意事項:

1.居家:電冰箱、微波爐以及電鍋等大型家電都可能滑出。

2.辦公室:如辦公室有玻璃,可能因地震噴濺碎玻璃致死,應盡速遠離。而大型辦公椅、複印機或相關儀器若沒有可固定的腳,需提防滑動壓到人的情形。

3.戶外:商家招牌、盆栽等都可能會砸到人。此外磚頭也可能會飛落,尤其是地震又遇到有雨的時候是特別危險的。

日本還有一篇文章指出,大地震時,冰箱是「飛」起來的。因此該文章也建議要把大型家具、電器物品在平時固定起來,將有效提昇地震存活率。

 

由於日本地震頻繁,因此他們出了一本「東京防災」,裡面很詳盡的講解關於地震預防、地震應對與震後行動,很推薦大家下載下來看看(是圖文檔,不會枯燥)。

《東京防災》(簡體、繁體中文版下載)

http://www.metro.tokyo.jp/CHINESE/GUIDE/BOSAI/index.htm

 

此外,目前開發中的楓葉板,未來有可能會做關於熱感應、空拍的機器,將來對於救災勢必能發揮一定的效益。

但我們還是希望未雨綢繆、在災前就做好一切的防範措施,才是最穩妥的。

 

資料來源:

內政部消防署

http://www.nfa.gov.tw/cht/index.php?code=list&ids=275

《東京防災》

http://www.metro.tokyo.jp/CHINESE/GUIDE/BOSAI/index.htm

日本地震灾害死者死因分析与思考

http://sjdz.iemzzs.com/oa/darticle.aspx?type=view&id=20120314

大地震時、天井落下の窒息死はわずか17%、死因の70%を占める意外な原因とは?

http://ie-mania.net/security/1167/

 




自造年代- 復古微電腦新世代

gava  2018-02-05   留言:0

Photo by Federica Galli on Unsplash

Photo by Federica Galli on Unsplash

這個時代,每個人都至少有一隻智慧手機,智能家電無所不在。
自動無人駕駛車,機器人,智慧手臂...等也正蓄勢待發,我們已走在第四次工業革命的路上!

回顧我們曾走過的歷史:第一次工業革命源自十八世紀,鐵路和蒸汽機的發明,讓農業社會轉型進入機械生產時代。第二次工業革命發生於十九末到二十世紀初,生產線及電力系統普及,半導體技術開始規模化,間接地帶來第三次工業革命。大型電腦、個人電腦、網路的發展,自由、開源軟體...等也應運而生。

隨著開放原始碼的風潮及網路社群的催化,原本只能在工廠“生產”的知識變成網路上自造者的“寶典”。自造風氣(Maker)開始帶來另一種生活方式,如:自種食用蔬果、家具DIY、親自下廚..等,即使科技可以很進步,人類還是熱愛親自動手做的感動。

這股動手做的天性,讓人類可以實現自己的想像力。我們一邊使用大眾化的產品,一邊自造改良其特性來適應各個不同的個案,成為一種推動社會轉動的微改革。

2005年,Arduino單晶片微電腦控制板出現(義大利),設計電子互動裝置逐漸變得熱門,各項研究計畫及實現也開始出現。

http://intergalacticrobot.blogspot.tw/2014/05/respirar.html

Photo by Artur Coelho  License: CC

2012年,Raspberry Pi 樹莓派單晶片電腦出現(英國)。面積只有一張信用卡大小,體積大概是一個火柴盒大小,可以執行像《雷神之鎚III競技場》的遊戲和進行1080p影片的播放。儘管一開始是針對教育所設計的產品,卻推演出許多想不到的強大功能。小至微感測控制器,遊戲,小機器人等等,大至網站伺服器,串連組成超級電腦,物聯網等等。

https://commons.wikimedia.org/wiki/File:Raspberry_Pi_Zero_1.3.jpg

Photo by Horst-Josef  CC BY-SA 4.0

 

繼樹莓派後,台灣也出現了MapleBoard楓葉板。楓葉板配了四核心應用處理器/1GB 主記憶體/8GB內嵌式記憶體,硬體上整個大升級!並豐富了IO輸入輸出界面,看來是想讓微電腦晶片有更多的實驗和應用~

未來會是怎麼樣的呢?拭目以待吧!
 

https://www.mapleboard.org/

Photo from Mapleboard




博文管理上線

blogtest  2018-01-31   留言:2

博文管理畫面截圖

在自己的關於博主頁面,
除了編輯個人資料與封面管理之外,
沒有現實朋友的測試小弟發現,
新增了博文管理的選項囉!

以後儲存成草稿的文章也會在這裡列出來,
真令人開心 heart




如何製作高清gif on Debian

mark  2018-01-30   留言:4
為什麼我的gif出來只有256色,我感覺我自己好糟crying

感謝這位同學的發問我又有一篇可以發揮了

這次源頭其實只是要抓畫面擷圖成為gif

但產生出來的結果都是畫面不太好的狀況

一開始單純以為是畫面擷取程式有解析度選項可以調整

但找了一些資料後才發覺原來問題是gif只允許256色!!

 

why gif is 256 colors ?

原來會有這種檔案格式是因為要減少圖擋在網路上傳輸的時間,所以將原始色彩轉為8位元色彩,但由於這種檔案格式可以插入多個影格(frame),所以現在gif常被用來當動畫圖或是最近常見的meme Giphy meme fail

在找資料才發現原來有人為了處理我們這種近乎不合理的要求
完成了這樣的一個超好用工具 peek + gif.ski

 

what is peek ?

peek 算是我目前用過很好用的桌面錄影軟體 (官網:phw/peek github)

因為他可以靈活的選擇目前要擷取的範圍還有可以很方便啟動以及關閉

圖片來源 phw/peek github

詳細設定可以到 preference 作更精細或更高品質的調整

peek preference

畫面擷取自peek preference 畫面

好了問題來了

這東西可以直接apt install 嗎 ?

可以 但對debian來說不行 crying

所以這邊就順便附上在debian上安裝peek的簡易說明

1. 準備相關library安裝

sudo apt install cmake valac libgtk-3-dev libkeybinder-3.0-dev libxml2-utils gettext txt2man

這邊建議可以在最後補上ffmpeg 因為我在最後一步deb安裝時就因為缺少此library造成安裝中斷

2. 下載程式碼 [line 1] 並產生安裝檔(.deb) [line 2-4]

git clone https://github.com/phw/peek.git
mkdir peek/build
cd peek/build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DGSETTINGS_COMPILE=OFF ..
make package

3.安裝 (其中1.2.2數值可能會變請依實際狀況修改)

sudo dpkg -i peek-1.2.2-Linux.deb 
Selecting previously unselected package peek.
(Reading database ... 196873 files and directories currently installed.)
Preparing to unpack peek-1.2.2-Linux.deb ...
Unpacking peek (1.2.2) ...
dpkg: dependency problems prevent configuration of peek:
 peek depends on ffmpeg; however:
  Package ffmpeg is not installed.

dpkg: error processing package peek (--install):
 dependency problems - leaving unconfigured
Processing triggers for gnome-menus (3.13.3-9) ...
Processing triggers for desktop-file-utils (0.23-1) ...
Processing triggers for mime-support (3.60) ...
Processing triggers for libglib2.0-0:amd64 (2.50.3-2) ...
Processing triggers for hicolor-icon-theme (0.15-1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Errors were encountered while processing:
 peek

如果剛剛沒有安裝ffmpeg 就會出現這個畫面請繼續到3.1

如果剛剛有安裝完那就恭喜你你完成了

到桌面找一下就會找到peek 點開就可以使用了 :)

3.1 補安裝完ffmpeg的訊息 ?

Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 ffmpeg : Depends: libavdevice57 (>= 7:3.2.10) but it is not going to be installed
          Depends: libsdl2-2.0-0 (>= 2.0.4) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

基本上就是打 sudo apt --fix-broken install 就可以繼續完成剛剛未完成的安裝,恭喜你完成安裝了

而在仔細看官網列出的常見QA 有看到一個有意思的問題 : How can I improve the quality of recorded gif files ?

作者說你可以再安裝一個工具gifski 如此就可以完成更高畫質的gif

 

what is gif.ski

這個真的很厲害 就是這個軟體打破了gif 品質不高的宿命

來看看gif.ski究竟可以將gif玩到怎樣的程度

是不是超厲害的

這次安裝就比較簡單了因為作者都幫你包裝好

只要在下載解壓縮後根據你的作業系統選擇對應的安裝檔

以linux / debian 來說就是

sudo dpkg -i gifski_0.7.3_amd64.deb

那接下來就來看看gif如何從256色回到全彩的世界

 

效果比較

測試影片出處 (這是blender 每次推出新版都會有的小短片)

https://www.youtube.com/watch?v=mN0zPOpADL4

這部是 Agent 327: Operation Barbershop 由 Blender Animation Studio 上傳分享

gif測試輸出大小 480*320 pixel

1. byzanz (fps: 60 ? )

byzanz-record --delay=3 --duration=5 --x=300 --y=200 --width=480 --height=320 byzanz.gif

使用起來不太方便因為你要自己算x y的位置,這邊就是因為沒有算好才會有畫面上方的粗黑邊

byzanz captured gif

2. peek (fps: 10)

這邊就可以看到不會有上面的奇怪的顏色

peek captured gif with fps=10

3. peek + gif.ski enabled with max quality (fps: 10)

peek captured gif quality enhanced by gifski  with fps=10

 

是時候跟256 colors gif 說掰掰 laugh