Symfony 安裝簡易教學 (debian stretch)

1 年 9 個月 ago

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

 

mark

呆頭鵝工程師的臆想世界

1 年 9 個月 ago

台北燈節

某一天,受某呆頭鵝工程師的啟發,我想要探尋一下,這些如同和我隸屬於兩個完全不同的世界的技術怪咖們,平時工作時到底都在想些什麼,是不是也和我們普通人一樣,於是就跑到linux的內核代碼里面去,分別搜索了一下f**k和LOVE這兩個單詞,想看看數以百萬計的程式裡面究竟隱藏著什麼秘密,結果果然有了“重大”發現。

盯著一千幾百萬行程式的工程師的大腦構造一定和文藝青年的不同,雖然大多數時候他們享受與電腦對話的過程,但也難免會有感覺要崩潰的時候,因為長此以往幾乎忘記了外面的真實世界,只顧沉浸在虛擬世界里,假作真時真亦假,真真假假,已無從分辨。

也許是出於幾分惡作劇的心裡,也許是一種發洩的途徑,高智商的呆頭鵝工程師們把他們的情緒隱藏在了一般人看不懂的電腦程式里,好像是在向電腦吐槽,又像是自言自語。據說在升級的linux版本里,f打頭的四個字母組成的單詞已經比以前少了很多,但偶爾看到時仍令人難免忍俊不禁,嚴謹得如同機器人一般的工程師們原來也有這樣人性的一面,這終究是件好事。

而呆頭鵝工程師們對於愛的渴望在電腦程式里更加明顯,在字裡行間幾乎隱藏不住了。工程師愛電腦,是毋庸置疑的,然而他們在滿足了虛擬世界的種種臆想之外,是否也渴望被人愛,被人理解?

被對不同物種的好奇心驅動,我很想探索呆頭鵝工程師的臆想世界。但是我也知道這絕非一朝一夕的事,而是一個長期深入的過程,畢竟是不同物種。。。

咳咳,不如換換腦子,找點輕鬆的事情來做,一起看看今年的台北燈節吧!wink

10

9

8

7

6

5

4

3

2

1

(各位親愛的呆頭鵝工程師們,祝你們元宵節快樂呃!cheeky

Michelle

淺談「用Blender-3D軟體模擬製作MP130楓葉板之二 」

1 年 9 個月 ago

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

 

 

jennie

恭祝大家新春快樂,萬事如意

1 年 9 個月 ago

新春快樂

今天是大年三十,辭舊迎新的日子,愿過去一年所有的煩惱和不快都如昨日之日般一去不返,從明天開始,帶著重新出發的心情迎接新的一年。愿楓葉板社群的每一位朋友在2018年都能紅紅火火,萬事如意。也祝楓葉板社群能聚攏越來越多有夢想的人,大家共同努力,攜手走向更美好的明天!heart

拜年

Michelle

遙祝臺灣震後平安

1 年 10 個月 ago

云翠大厦

今早習慣性地瀏覽微信朋友圈,突然發現“看見Taiwan”於淩晨4:44發布了壹條消息:“大約4小時前,臺灣花蓮發生裏氏6級地震(實際為6.5級),目前市區內有多幢大樓坍塌……2016年,臺南也是在2月6日發生大規模地震,造成重大傷亡……”

我看的時候不夠仔細,以為昨夜是花蓮和臺南同時發生大地震,大驚之下,非同小可,立即告知了正與我對話的臺灣朋友。結果對方確認之後告訴我,地震的只是花蓮,沒有臺南。我回過頭去再看這條新聞,才明白是怎麽回事。可是歷史總是驚人的巧合,兩年前的今天,在臺灣島的南端同樣也發生了壹場大地震。我還記得那時的慘烈景象,壹晃眼兩年過去,悲劇竟然再次發生了。

直到目前為止,我壹直都在網上密切關註著事態的最新進展。由於上不了谷歌,我只能不停地去刷頭條號。結果發現,因為我的關註,相關的消息便不斷地被送到了我的眼前。這也是人工智能篩選的結果。我在寫這篇博文時從網上得到的最新消息是,在地震中不幸遇難的人數已升至12人。在這場禍及彼岸的地震災難中,大陸同胞也不能幸免,已知有4人遇難,目前仍有來自北京的一家5口處於失聯。而我想到更多的,是倒塌的房屋和在地震中受傷的臺灣同胞們(200多人受傷,500多人被收容)。與兩年前的臺南大地震發生的時間壹樣,也是馬上就要過農歷新年了。這下子該有多少人無法安心過年,甚至連個像樣的家都沒了。

災難不是發生在自己身上,所以不知該如何表達心情,只能說沈重與難過,還有不敢輕易道出的感同身受。我還想到這幾天是漳州最冷的時候,處在同壹緯度上的臺灣也是壹樣。希望損失嚴重的災民能夠盡快得到安置,至少能讓他們有個屋頂可以遮擋風寒,有足夠的衣物可以保暖。

我的妹妹在2月4日花莲地震當天剛剛飞离台湾,她之前才去過花蓮,另壹個朋友的朋友,因為這場突如其來的地震,可能要取消即將於這周末開始的臺灣行程裏的花蓮壹站。我的朋友在微信上關心地詢問我是否在臺灣,我也在關切地叮囑我的臺灣朋友們,當心接下來幾天的余震。有很多人都因這場地震而揪心,我們其實離得並不遙遠。

除了表達關切的心情之外,我還想說,希望我的臺灣朋友們能理性地盡量在後方提供支援,就算是想救災,也請過了這幾天,等余震平息下來再說。當年四川汶川發生大地震的時候,也有很多熱血的群眾開著車前往災區想要盡壹己之力,可是非但沒能幫上忙,甚至還給救災的人們增添了麻煩。不如在力所能及的範圍內提供幫助,哪怕只是誠心誠意的祈福也好,這也是壹種支持的力量。

花蓮是我去過好幾次的地方,太魯閣和七星潭的美麗風光,東海岸的碧海藍天,还有热情淳朴的花莲人,都給我留下了非常美好的印象。希望天佑花蓮,天佑臺灣,讓這場地震災害盡早過去,顺利救灾及重建。對於我愛的臺灣和臺灣人,我想最大的祝福莫過於——祝妳平安。heart

Michelle

【地震剛發生】地震一發生時,該如何行動

1 年 10 個月 ago

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

 

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

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

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

 

防災的幾點注意事項:

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/

 

jonas

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

1 年 10 個月 ago

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

gava

測試一下草稿功能,以及後續發現的問題

1 年 10 個月 ago

豬頭如我

其實這個吧,昨天就想試來著,可是豬頭如我,寫完文字部分還是想不起保存,非要先插圖不可,結果在插圖的時候又出現了誤操作,就連文字也沒了。。。真愁人啊!所以我忍不住又有了非分之想:能不能實現自動保存功能呢?(最近電腦不在身邊,只能用手機寫,所以才問題多多,請Sean諒解。)

這次我學聰明了,剛寫了一段就保存了,然後也通過Sean交代的路徑找到了草稿,辛苦鑽研不止的網管Sean了,再次手動點讚。

今天是在北京逗留的最後一天,這也是北方最冷的冬天,經歷了零下十幾度的低溫(這是身在台北的你們完全無法想象的吧?),身體也因為南北的差異始終感覺有些不適,我,這隻從北飛到南的候鳥,已經漸漸進化成南方人了。

發幾張在北京拍的照片給沒來過的人看吧!世界之大,讓我們如同身處截然不同的空間,但互聯網的存在,又將空間距離縮小到楓葉板社群上面。這是多麼奇妙的事情啊!

另外,對於插圖我還有一個小小問題,能不能取消掉文字替代的選項?因為不愛寫圖片說明的我,真的很頭疼每次該寫什麼,乾脆用123代替,心好累,嗚嗚。。。(還有,假如文字部分如我理解真是圖片說明的話,為什麼在正文里顯示不出呢?所以它到底有什麼實際用途?)

But,用手機插入圖片操作起來真的好麻煩,等半天都沒反應,還很容易出現誤操作,所以只好放棄了,請大家展開想象的翅膀,在台北眼下的陰冷天氣里想象北京零下十度的乾爽藍天吧!

許多事情,就是在實踐過程中通過發現問題,解決問題,慢慢完善的,我是個比較善於發現問題的人(就是問題大王啦!)。我覺得像現在這樣,需要手動選擇草稿或是已發表,不如在下面的選項里直接增加一個發表的選項,來得更方便,其實preview並沒有多大用處,不如直接改成發表的好。也就是說,點擊儲存就能保存為草稿(如系統能自動保存則更好),點擊發表就直接發表。

我為什麼這樣說呢?因為我發現即便是已經發佈了的文章,在修改完畢,不小心保存成草稿之後,就又會從楓葉板社群的主頁消失了,重新變成了草稿狀態,不知道這是個什麼樣的bug呢?而且,假如每次修改后還要手動選擇已發表,也是有點麻煩的說,不如直接按下button來得更簡便(我是一個文字上的完美主義者,一篇文章常常改來改去無數回,所以才會發現這個問題)。。。

另外,我對表情也有疑問,一,選擇太少,二,為什麼不能緊跟文字偏要另起一行?

感覺我就快要被Sean列為頭號敵人了,嘿嘿。不過,我的意見不是要求,因為我不是專業人士,不知道難易程度,能否實施,所以只是把我發現的問題提出來,僅供參考。devil

 

 

Michelle

如何製作高清gif on Debian

1 年 10 個月 ago
為什麼我的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

 

mark

創業,是人生一場漫長的修行

1 年 10 個月 ago

有只鸚鵡,它喜歡倒看世界,看名堂,看熱鬧,也看門道

这段时间,一直在路上,从漳州到福州再到北京,像一只不停飞翔的候鸟,就算暂时地落脚,也只是为飞往下一站做准备。好像已经分不清家在哪里,所有的栖息地都是临时的,不论是南方还是北方。不过,我发现我已经渐渐适应了南方的气候,回到北京,反而有了种种不适,仿佛这里并不是我曾经生长过四十几年的地方。

我最亲切熟悉的城市,依然是下一站——台北。

手头没有电脑,只能用手机打字发部落格了,于是出现了两次误操作,写好的两篇都丢了,我倒也不以为然,丢了就丢了吧,反正失去是人生的必然。在旅途上辗转奔波的十几年,曾经有很多照片都被遗失了,使我渐渐想开,那些记忆留在脑海里就好,不必非要用影像存留,最宝贵的,永远不是画面,而是某时某刻在脑海中掠过的感受,能抓住它们的,不是相机,而是你的心。

不过我也因此而发现了一个问题,那就是为什么我写部落格不可以一点点写,然后被自動保存成草稿,在自觉完善时再发出去?这样就不至于写好的文字不慎丢失,或是明明还没写好就要被人看到(尤其是用手机写,很容易出现这个问题)。希望辛苦的网管Sean同学能帮我解决这个问题。

这些都是我啰嗦的题外话,今天我想说的是,最近在国内的互联网上最引人注目的一件事,茅侃侃之死。

这是一位八零后创业者,写程式的天才,小小年纪就已经出名,曾经被誉为京城IT四少。这些年在互联网沉浮,本来已淡出人们的视野,一夜之间,他的死讯却震惊了创业圈。

他,竟然年纪轻轻(不到35岁)就自杀了。这是多么令人意想不到又状似悲惨的结局。

一时间人们议论纷纷,惋惜哀叹的大有人在,也有冷静好事者,忍不住開始分析他的死因,虽然这样做看上去似乎有些不近人情,但一件事情的发生总有其根源,如果能总结出来,没准也可以使有相似经历之人能够加以杜绝。

在提倡全民创业的中国,这件事无疑是给热心创业的人们敲响了一记警钟,来,就让我们撇去感性因素不言,也尝试着分析一下,究竟是什么把这样一位创业偶像,青年才俊逼上绝路,非死不可呢?

表面看来,他是由于融资失败,负债累累,无法维持公司的运营,两个月发不出工资的他,已经被手下60位员工告上仲裁法庭,卖车卖房,孤注一掷,已无退路。因此才带着绝望的心情告别世界,我们第一个想到的,一定是他心理素质太差,无法承受失败,但转念又一想,他并非一个刚刚创业不久的新人,而是已经在创业圈里历练了十几载,应该已经历过不少沉浮了。唯一的弱势就是少年成名,起点过高,使他多少有些浮躁的心态。但据他身边朋友所说,他是一个很懂礼貌也很讲义气的人。在他写给投资方的电子邮件里也很看出,他口气谦逊为人诚恳。不像是个做事冒进刚愎自用的人。所以我先把心态放在一旁,来探究一下其他具体原因。

面临资金的缺口,几乎是每个创业者都曾经历过的。我因为做校友平台的关系,接触过非常多创业的校友,他们异口同声都为我讲述过最艰难的阶段。就在前几天的福州,还有一个校友跟我说,他曾经有两个月发不出工资,这和茅侃侃的经历何其相似。然而不同的是,他有一批和他理念相同,能同舟同济的同事,两个月没拿到工资,居然没有一个人找他理论,仍然埋头工作,无人偷懒,而他也在这段时间内积极筹款,迅速补齐了资金缺口(无非是找朋友借钱)。

由此看来,在艰难的创业阶段,有一群不计较个人利益,能共渡难关的共事者有多么重要。因为靠一个人的力量真的是非常有限,我猜茅侃侃之所以撑不下去,也是因为孤掌难鸣吧!

现在说到我认为创业最关键的一点了。员工们为什么可以信赖你,跟你一起坚持到底?除了管理者的个人魅力之外,更重要的是,选对了创业方向,这样不但可以给自己信心,也可以让别人看到希望,暂时的困难能够克服,因为有美好愿景在等着你们,坚持下去,就是胜利。这样的信心绝不是盲目的,而是出于对产品及战略方向的十足把握,选对了,再难也能挺过去,迎来柳暗花明,选错了,付出越多,方向反而偏离得越远。

茅侃侃选择电竞行业作为他再次起步的目标,此时中国的电竞行业刚好进入黄金时代,可以说符合了天时地利的条件,但人的因素恰好成了最大的阻碍。技术人员出身的茅侃侃把主要精力放在了产品研发上,而忽略了品牌的建设。由于投入巨大,出现了资金缺口,连基本运营都无法维持下去,而他在谋求资金帮助时又忽略了个人的控股,导致和投资方发生了意见分歧,在对方撤资的情况下,内部员工又未能给予他支持,内外交困,才面临了崩溃的境地。

以上,我们谈到了选择的重要性,团队的重要性,控股的重要性,策略的重要性,凡此种种。我没有谈到大环境,其实这也是非常重要甚至起到决定性作用的因素。但这是有地域差别的,无法一概而论。总之在目前内地的大环境之下,创业者面临更多不可控因素。因此我才说,在某种程度上,创业如同赌博(其实这是一件非常悲哀的事),也许要搭上全部身家性命孤注一掷,有输有赢,必须学会愿赌服输,还能有从头再来的勇气与魄力,就像褚时健。

而茅侃侃,毕竟还是太年轻,他没能跨过這道艰难的门槛,倒在了前赴后继的创业路上。

事實上,並不是每個人都適合創業,首先要有超級強大的心理素質,能承受挫折,不怕從頭再來,其次還要有足夠的個人魅力和團隊凝聚力,理念相同的合作者,可以共進退的核心團隊,要建立合理的退出機制,始終保持對公司的控制權,不可因其他因素偏離一開始堅持的大方向,還要懂得適時調整戰略。總而言之一句話,要做好充分的準備。。。

最後我想說,創業大不易,且行且珍惜。不如把它當做人生路上一場修行,成功了,妳獲得的不只是財富與成就,還有個人的成長。就算失敗了,它所帶來的人生經歷,也是一筆不可多得的財富。

Michelle

就算不是工程師,也要有格調的「裝忙」

1 年 10 個月 ago

好忙好忙

在滿是工程師的辦公室裡,分秒深陷程式碼中因而耳濡目染學會如何coding

這般美好的事情,當然是謀~~摳~~零~~

常常聊天到一半,只差沒懷疑自己是不是中間恍神了,怎麼現在聊的內容我完全聽不懂啊~

「哈囉~說人話好嗎?」

更別提他們間的聊天,扣掉中間穿插的幾個字詞勉強擦邊聽懂外,剩下的......啊哈哈,大概是因為我們是不同物種吧!

記得之前好像看過寵物翻譯機,主要針對犬類,將其吠聲與行為轉化成人類可理解語言

希望我也能獲得一台「工程師翻譯機」,最好可以自動充電,因為每天上班我都會需要它的!

(可不可以工程師們上班之餘看到我的許願,然後該做硬體的做硬體、該做軟體的做軟體,操作介面我不強求,簡單簡單就好)

 

 

但是(哼哼哼,難得這麼得意的說著這兩個字)

不得不誇獎一下自己,我從完全看不懂程式語言到拿著sudo亂揮(認真只是亂揮)

現在的我已經不是之前的我了哼哼,我可以自己下載APP來玩了~~~

雖然成就之小,但是進步就是進步(翹鼻子)

先曬下最初的小遊戲:
cmatrix

CMatrix

因為CMatrix已被Debian接納,所以安裝很簡單,只需要拿出sudo揮個兩下就能夠玩了

 

$sudo apt install cmatrix

但當我開心的展示成果時,老闆默默的問說:「你電腦中毒?」

更壞的是同事們,他們以一種「她腦子早就中毒」的表情回望老闆

 

 

國父革命11次才成功,已非吳下阿蒙的我怎能輕言放棄

最近找到了款工程師級的裝忙程式

svenstaro發表於Github的A nonsense activity generator

不管是安裝、執行還是下載,看起來就是厲害,是不!

(再次感謝svenstaro供圖,弱弱如我下個目標設為做出gif好了)

 

 

好玩的東西是值得浪費青春的,讓我們一步步看怎麼下載吧!

  1. releases page 依作業系統選擇下載檔
  2. 先到存放的資料夾,我剛下載所以直接到下載資料夾 $ cd Download/ 
  3. 活化他~~~ $ chmod +x genact-linux
  4. 別客氣,開始玩弄他!!! $ genact-linux

如果還是覺得好難,生命想浪費在有意義的事情上,但又想假冒一回厲害的工程師

網頁版愛你kiss

 

 

如果你是個有興趣又有能力的人,恭喜你!

A nonsense activity generator可以自行修改變數,想要它飛天或鑽地都行(啊是要一個裝忙程式做什麼啦......)

要是你也跟我一樣是個「程式在跑,除了帥還是帥」的人,沒事的

內行看門道,外行看熱鬧,就讓不會程式的我們一起好忙好忙~~~

Sia

D3.js 真是一個好工具 (snapshot only)

1 年 10 個月 ago

heart drawn by d3.js author Nadieh Bremer

首頁圖 (image source) 有辦法在網頁上畫一個愛心嗎?他有一名朋友最近有點難過 這次會有這篇文章要感謝OO同學因為她提了一個有趣的問題   我就來問問了我們偉大的Google大神 於是乎就找到了這個有趣的的文章 其實畫圖這件事並不難 重點是畫出愛心的方程式要怎寫 這對一個非數學系的人是一個不小的挑戰 所幸我們有Google (歡呼~)   這次文章程式碼主要是從Nadieh Bremer 網站的教學擷取出來 心型數學公式 :http://mathworld.wolfram.com/HeartCurve.html 程式碼:https://www.visualcinnamon.com/2015/02/happy-valentines-day-animating-heart.html 看完才發現原來這位作者Nadieh Bremer是一位data visualization 的專家 有興趣的可以點這個連結看更多這位作者的作品 https://www.visualcinnamon.com/portfolio   nadieh bremer works snapshot 畫面擷取自  https://www.visualcinnamon.com/portfolio   Data visualization 一直是我很有興趣的一塊 但礙於我美工天份不足所以一直以來都只能是欣賞 而不太能實做 >< 結果直到看了這一篇 我才知道有一段時間我一直再做的其實就是data visualization 而我一直景仰的是inforgraphics   這兩者差異在那呢? 原文  Matthew Pritchard : Data visualization vs. infographics  http://killerinfographics.com/blog/data-visualization-versus-infographics.html   Data visualization
  1. 描繪原始數據
  2. 傳達資訊
  3. 提供客觀性

簡單說data visualization 就是可以取得數值,圖表產生。基本上在這一步完成讀者就可以根據這些資訊來完成結論,但因為只有圖表, 所以還是會仰賴輔助文字說明,才能了解我們現在所看到的圖表究竟代表什麼意義。

Inforgraphics
  1. 故事視覺化
  2. 提出觀點
  3. 提供主觀性
光是只有上面的圖表可能無法吸引非專業人士的目光, 有時我們也會希望這組數據可以引起更多人注意, 所以吸引目光這件事情就主要是透過infographics來達成。因為有故事的關係還有版面配置, 會讓讀者就像在看童話故事書一般深入其中,並迫不及待想看完這故事,迎來最後英雄擊敗大魔王勝利的完美大結局   所以根據本質差異兩種方式有不同使用的場合   Data visualization
  1. 新聞
  2. 白皮書&電子書
  3. 年度報告

有興趣可以點以下連結了解 :http://killerinfographics.com/blog/storytelling-through-data-visualization.html

Inforgraphics
  1. 部落格文章
  2. 案例分析
  3. 市場行銷文案

有興趣可以點以下連結了解 :http://killerinfographics.com/blog/4-ways-to-stretch-your-infographic-content.html

而關於d3.js 以及data visualization的淵源我也不是很清楚 但這篇文章還介紹的滿詳細,就放在這邊供有興趣的人參考 http://www.cc.ntu.edu.tw/chinese/epaper/0040/20170320_4004.html   Bonus : processing.js 這也是一個可以畫圖的js 但這個似乎比較偏向藝術類 有興趣可以點以下網站點每個作品進去看看 每次重新整理都會是不同的結果   http://p5p.cecinestpasparis.net/index.html   p5p generative art gallery snapshot    圖片擷取自 http://p5p.cecinestpasparis.net/index.html    
mark

【開源,干卿底事?】

1 年 10 個月 ago

吹皺一池春水

上回我們科普了何謂開放原始碼(以下簡稱「開源」),這次來談談他與我們的連結。

 

從工程師的角度而言,我完成一個專案、為公司寫了許多Code,但一切版權仍然留在公司,也就是說所有的心血都無法帶走、重製,更甭提商業活動了。而開源的起源,一個很大原因就是如此:冀望有自由、得到更大的創作權利。

 

我不是工程師,那開源又與我何干?在現今的科技產業中,很多東西已經不是傳統「把一種技術練好就打遍全世界」(無法這樣的原因包括1.專案的塊頭太大,憑一公司之力難以完成2.科技產業競爭激烈,自己來不及做出來別人就攻下來了),因此前些年Google將Android開源,為智慧型手機App產業帶來一次前所未有的革新,也就是說,我們現在能有如此多的免費好用的App,這部份要拜Google所賜。

 

而在更貼近生活的部份上,台灣的國家機構、中小學教育機構也開始導入開源,所以我們如果在學校使用電腦,有看見「odt」檔的部份,就是他使用了開源系統。開源的事務軟體也能一併轉換成Word、Excel、Powerpoint,因此在使用上不會有太大的阻礙。另一方面,Google的雲端硬碟、照片的智慧分類與辨識、Gmail等等相關產品,都有滿大程度的免費使用,這對我們一般使用者而言實在是福音。

 

想進一步體驗、使用開源的話:

1.如果你跟我一樣沒有寫軟體的技術,建議你可以看麻省理工學院的App學習:http://appinventor.mit.edu/explore

(中文解說、舉例:https://sites.google.com/site/jingprogram/app)幾年前我用這個有做出傳簡訊到手機、訂Pizza多久到之類的手機與電腦連動功能。

 

2.如果你是工程師,相信你早已了解關於寫App的部份,TensorFlow、Drupal、Debian會是你最佳的選擇——參與一個專案,協助專案的推動與完成,這對於你的技術提昇、職涯成長都有莫大助益。

 

開源的概念已經在我們的生活逐漸展開了,你還不跟風試試嗎?

jonas

某人的偶像又放大招了

1 年 10 個月 ago

偶像

今早在知乎上看到壹條消息,立刻想到要向某人通報壹下,不過轉念又壹想,身為忠實粉絲的某人勢必時刻關註偶像動態,這麽大的事兒不可能不知道,but,為了以防萬壹(考慮到粉絲們總是各種忙碌,也難免百密壹疏),我覺得還是通報壹下比較好。(廢話還真是不少)

其實不算是新聞了,已經是三天前的事,1月17號谷歌雲正式公布雲AutoML這壹套全新人工智能服務工具,能夠幫助缺乏機器學習相關開發經驗的公司或個人,快速簡便地建立基於機器學習的應用。這對於我這種技術小白來說應該算是個福音,沒準讓我也能對雲裏霧裏的機器學習終於可以得其門而入。在李飛飛的口中,這叫做“AI普世化”,聽上去很令人振奮吧?在普通人眼裏,人工智能壹向都是高智商人士才能涉足的領域,如今它也許真的可以“飛入尋常百姓家”,是不是應該感謝那位孜孜不倦致力於AI研究的資深偶像呢?

谷歌

(圖片來源於網絡)

就連偶像本人也無法抑制激動的心情,在Twitter連發兩條信息,說:“在短短的幾個月裏,將尖端技術轉化為數百萬的產品,這是壹個相當鼓舞人心的旅程!我們希望AutoML Vision是我們客戶的第壹選擇。”有了AutoML Vision,任何人都能上傳圖片,然後讓谷歌的系統自動為他們創建機器學習模型。整個過程,從導入數據到標記和訓練模型,都是通過拖放界面完成的。

這次谷歌提供的系統,不但能讓沒有機器學習專業知識的人創建ML模型,還將創建ML模型中所有艱苦麻煩的工作,包括訓練和調試,都承接了過來。

我忍不住有點白目地想,人工智能不就是應該讓機器替人完成很多復雜的工作嗎?為什麽我們還要花費那麽多時間和精力去學習機器該學習的東西呢?我們只要輕輕地拖動鼠標,剩余的大部分工作就可以由人工智能服務工具來完成了。這才是真正的人工智能。

這個好消息是由由李飛飛和谷歌雲智能部門研究部主管李佳共同署名發布的,偶像在相關的博客文章中表示,相信雲AutoML能夠幫助人工智能領域的專家開拓更多有創意的、先進的領域,並且幫助相關經驗和技能欠缺的工程師建立性能更為強勁的人工智能系統。

根據谷歌雲的官方介紹,AutoML Vision具備以下特點:壹是準確度提高,AutoML Vision是建立在谷歌的圖像識別的基礎上,包括“轉移學習”(transfer learning)和“神經架構搜索技術”(neural architecture search technologies)。基於谷歌自身的技術,將使得對機器學習相關經驗的要求顯著降低。

二是Production-ready模型的周轉時間更快:使用Cloud AutoML,妳可以在幾分鐘內創建壹個簡單的模型試行妳的AI應用程序,或者在壹天內構建完整的production-ready模型。

三是方便易用,AutoML Vision提供了簡單的圖形化交互界面用於標註數據,使得數據轉換為針對妳的特定需求定制的高質量模型。

這應該算是人工智能領域的壹大突破吧!谷歌還是很厲害的,偶像也是很牛逼的。值得撒花慶祝壹下。。。

撒花

(以下為知乎上的相關網頁鏈接,供參考:谷歌傻瓜式深度学习工具AutoML

Michelle

淺談「用Blender-3D軟體模擬MP130楓葉板」.....(探險歷程)

1 年 10 個月 ago

blog01

開始接到這計畫,接到的指令是要把一個未生產的電路板用3D軟體繪製出來, 等於是把一個不存在的東西,讓它實實在在有血有肉的長出來, MP130楓葉板的內容等於是一台電腦的主機板,想必內容是五臟俱全的精細, 兩年前,對於一個已經深深浸泡在2D世界泥沼的我, 內心充滿無限『不可能吧』台灣人問號的想法, 且剛開始從一般業界所用的美工設計軟體大頭Adobe 練習轉為開放源系列軟體, 以公司案件的需求,實戰探索的方式來學習操作,平面類還算可以循序漸進的上手。但是對於3D,我只是3D MAX之小學生...畢業已久 ....

 

想當年『學習3D-Blender軟體』列為年度計畫,對我來說真的非常有挑戰性!

blog03

 

目前現階段3D-MP130楓葉板目標已經完成90%,寫一下小小的紀錄,分享給想學習Blender的人。

blog02

 

開 始

1. 研讀官網的使用者手冊User Manual(全英文)

2. Youtobe上面的教學影片 (外文居多,因開放源常更新,要注意有些改版功能調整很大)

( 練習的第一個建模! 小狗玩偶建模 )

blog04

 

初學者TIPS

  1. 中文教學影片 ( 由淺入深 - 從了解基本界面開始 )
  2. 收尋快速鍵,把常用的功能筆記下來 (Hotkey沒有它不行)
  3. 常常要有x.y.z 立體空間的概念(可練習素描各種物體,增加你對空間感的敏銳度)
  4. 與同好社群朋友一起研究,這就是開放源的精神 (卡住的時候,會有人拉你一把,或是一起迷路不孤單XD)
  5. Blender Animation Studio會不定期推出代表電影,了解軟體可以到什麼無與倫比的境界,讓人期待與有所啟發。https://www.youtube.com/channel/UCz75RVbH8q2jdBJ4SnwuZZQ

 

資 源

 

謝謝收看!:)    

jennie

電腦 Screen 中截取一小區塊圖

1 年 10 個月 ago

圖片截取自 https://help.gnome.org/users/gnome-help/stable/screen-shot-record.html.en

(圖片截取自 https://help.gnome.org/users/gnome-help/stable/screen-shot-record.html…

我已經使用GNOME桌面多年,經常需要截取Screen一小區域,例如做Bug Report。往往大費周張,先按 alt + prt sc 截取整個視窗圖,然後用GIMP,取出我所需要的區塊。

昨天無意中看到 Sia 用 shift + prt sc 直接截取Screen中一小區塊圖,歎爲觀止,立刻請她教我。這麼簡單,這麼直覺。這些年來,我卻做了多少虛功?感謝 Sia。

寫下這個短博文,分享這個小小 tip 給還不曉得的人。

 

contact

不做不知道

1 年 10 個月 ago

MP130楓葉板海報

Jennie新設計了一張楓葉板海報,很有節慶的味道。春節即將來臨,拿出來曬給大家看。

楓葉板是什麼?多面向的單板電腦:學習板、應用板、開發板、測試板、發想板、 DIY 板。大家都知道在英國開發的樹莓派是現在單板電腦的盟主,創造了一個新風潮,銷售到全世界,每天幾乎賣到一萬八千片。

當樹莓派已經這麼dominate的情況下,我們爲什麼還要做楓葉板?楓葉板計劃已經進行超過兩年了,我常反覆思索這個問題。隨着計劃的進展,對我來說,這個問題的答案越來越清楚,就是,不做不知道。

舉一個例子來說,當楓葉板計劃徹底做下去,很快就會發現,只有硬體一塊電路板成就不了什麼。真正重要的是跟着而來的楓葉板社羣的建立和經營。這真是大塊頭,不做不知道。要建立經營楓葉板社羣,先從楓葉板部落格做起。原來想,做部落格沒什麼,小菜一碟,就當作暖身和訓練計劃。做下去才曉得不是這麼回事,從各種Web程式語言技術,框架選擇,內容管理系統,資料庫,到實驗設計伺服器,功能測試伺服器,可靠度測試伺服器,最後才是舞臺上的Production伺服器。也就是說一個檯面上的部落格伺服器,後面有三個流水線般的伺服器,同時在一版又一版不中斷的開發、測試和發佈。此外還有使用者介面、使用者經驗、使用者Scenario的設計,最後才是內容撰寫和美工設計。好不容易,楓葉板部落格總算要開張了,且慢,10個使用者,100個使用者,1000個使用者,5000個使用者時的Policy和Mechanism間的分寸安排,應該很不同吧,每個階段過多或不足的Policy,過少或太多的Mechanism,都會造成不同程度的災難。

怎麼說呢?還是一句話:不做不知道。

附記:這篇短短博文寫得不太順暢,今晚很冷,有隻貓咪來亂,躺在我懷裏取暖,趕不走。

 

bagel1

 

bagel2

contact

錯亂的時間 - 為何我的網頁無法顯示伺服器時間

1 年 10 個月 ago

Lost in time

首頁圖  Image source

  0. 楔子

一開始以為很簡單的系統時間顯示, 沒想到處理起來才發現其中隱藏很多技術問題.

這篇主要會說明在實做發現的問題以及解法, 以及最後發現的可行實做的解法供大家做參考.
 

0.1 問題定義

期望結果:有一個php js編寫的網頁, 希望可以透過網頁操作修改系統時間, 並將網頁上的時間更新.

已知問題:目前可以透過網頁修改系統時間, 但無法將系統時間更新至網頁顯示. 之前沒有發現這個問題是因為, 系統和瀏覽器都在同一台電腦, 這次的問題就是發生在系統和瀏覽器在不同電腦上.

實做時間功能:系統時間是對系統下linux 指令 date , 瀏覽器時間則是用moment.js 的 moment() 函式取得

欲解決之問題:如何讓網頁顯示伺服器的時間

建議解法:計算兩者時間差, 使用moment().add() 完成系統時間的計算

 

1. What is moment.js

就是一個已經寫好的javascript提供許多容易理解以及實用的函數供網頁開發者處理時間顯示,轉換等功能

如果需要處理時區資訊還有另外一個姊妹作 moment-timezone.js

moment.js

    使用範例  /  基本入門

moment-timezone.js

    使用範例  /  基本入門

  2. 實戰篇

這邊不介紹實做細節,因為這都不是最後採用的解法,但因為這個過程中學到不少東西,所以就把有用的一些資訊整理紀錄下來作分享.

2.1 moment().add(兩地時間差,'milliseconds')
  • 系統的date 也可以調整輸出格式(更多細節
  • moment() 直接使用就是顯示瀏覽器的時間, 至於如何調整時間顯示格式則可透過moment().format() (更多細節
  • time format:
        hh (01~12) vs HH (00~23) 如果有使用am/pm 要注意使用的時間格式
  • timezone format :
        z / zz 這個會回傳時區縮寫
        Z ZZ 這個才是會回傳已中央標準時間(GMT)-07:00 ~07:00 
  • 時差計算:(更多細節
        moment().diff(Moment|String|Number|Date|Array);
  • js date and moment object conversion: 
        建議把javascript date 使用 toIsoString() 轉換格式後再配合moment的物件或是函式使用
  • 更多其他有趣使用plugin 可以參考 這裡
2.2 moment.tz(伺服器時區).format()
  • 如果有使用到時區資訊請使用moment-timezone-with-data / moment-timezone-with-data-20xx-20xx,否則timezone資訊找不到會造成時間無法顯示
  • javascript使用上有呼叫先後順序, 錯誤的擺放引用順序會產生物件或是函式未定義的情況發生

     

3. 真 ‧ 解法

其實這裡解法並非唯一

php解法說明  (參考連結

  • php 可以直接取得系統時間資訊 (參考連結
  • php 可以將值傳到javascript上 (參考連結) var currenttime = '<? print date("F d, Y H:i:s", time())?>'; var serverdate=new Date(currenttime);

     

js 解法說明 (參考連結

  • javascript 可以透過網頁特殊欄位取得系統時間資訊
    完整欄位資訊可以透過getAllResponseHeaders取得 (範例
  • 整體分成三個步驟
    1. fetchServerTime:取得系統時間計算時間差
    2. timerHandler:目前顯示時間=目前時間moment()+時間差
    3. updateDisplay :更新目前顯示時間
  4. 後記 - 問題探索過程摘要

當然對於一個之前非網頁專門工程師來說, 中間當然要借助不少開發者工具,或是線上沙盒幫忙, 最後才會知道說原來兩邊說的時間是不一樣的. linux 指令 date:這個毫無疑問可以取得伺服器時間, 而moment.js 的 moment() 則是回報瀏覽器的時間這會因為使用者所在時區或自行設定的時間不同而有所不同. 剛開始的確是按照建議的方式去執行,並依照建議將linux date得到的結果透過toISOString(), 但結果是時間會因為時區計算錯誤而導致顯示時間和想要設定的時間差了幾個小時大致慘況是這樣

網頁角度:
瀏覽器目前所在時區為GMT+08:00
目前顯示的時間為 2018/01/10 17:36 GMT+08:00
伺服器目前時區為 GMT-04:00 而時間又是調整過成為 2018/01/10 09:22 那瀏覽器會怎解釋呢?

瀏覽器會先把 要設定的時間轉為一致的時區再做計算 (-4 → +8)
2018/01/10 09:22 (-04:00) → 2018/01/10 21:22 (+08:00)
瀏覽器就會看到 2018/01/10 21 :22 GMT+08:00

使用者角度:

看到時間從 09:22 變成 21:22
使用者就崩潰了 >< (為什麼跟我設定的時間不一樣)

於是我又開始往更麻煩的地方去想:時間差=兩地時間差+兩地時差
過程中還有使用到系統時區資訊將最後顯示到的網頁時間重新調整

var dispDate=moment(iso格式時間).tz(系統時區).format(時間格式)

但是這次又變成不會更新了!!原因是我的系統時間只會再有變更或是頁面重新載入時才會更新, 除此之外並不會自動更新
其實要自動更新並不是不行, 而是目前使用的方法每一次對系統詢問或是設定至少都需要0.2ms,所以每秒都要更新的時間, 這樣是不切實際的

所以到頭來才發現
1.要取得系統時間不麻煩
2.取得時間方法不唯一

知道這兩點剩下就輕鬆了 surprise

常用資源

1. w3cshools - js

2. w3cshools - php

3. online php sandbox

4. jsfiddle

5. php manual

mark

【科普文】何謂開放原始碼?

1 年 10 個月 ago

何謂開放原始碼(以下簡稱開源open source softwareOSS),根據MBA智庫百科的定義:

開源軟體也稱開放源代碼軟體,是一種源代碼可以任意獲取的電腦軟體,這種軟體的版權持有人在軟體協議的規定之下保留一部分權利並允許用戶學習、修改、增進提高這款軟體的質量

 

提到開源的歷史,就一定要談談Richard Stallman 這號人物。在1970年以降,當時許多大企業並沒有開源的觀念、或甚有「原本是開源、後來改成不開源的情形」。Richard Stallman對這樣的情況很不滿意,因此下定決心要創見一個開源的作業系統,來根本解決開源的問題。

 

Richard Stallman

Image Source

 

 

 

1983/09/27Richard Stallman發起GNU計畫,希望做出一個「讓人人都能自由使用的開源電腦作業系統」。而在Richard Stallman獲得資金贊助不久後,另一支同樣本著開源理念的部隊也逐漸壯大--Linus Torvalds所引領的 Linux企劃如火如荼的進行。最後, Linux企劃很成功,也就成了今日提到「開源作業系統」就立即聯想到 Linux的局勢。

 

雖然Richard StallmanGNU計畫上並沒有如期的成為主流開源軟體,但他對開源界所提出的貢獻是不可忽視的:提出GPL的觀念、條款。什麼GPL?簡而言之就是讓開源的東西能夠進行商業行為、二次編寫修改,這對於當時的世界是一件不可思議的事情--你能想像一項你發明的技術,將用「無酬」方式分享給大家,並且無限制的讓大家做重新創作與使用嗎?

 

因此這份條款讓開源獲得生命,並在全球的程式編輯者、創作者之間不斷流通運轉,形成今日的開源社群、以及無數的開源軟體。

jonas

雙重星期一症候群之矽膠腳墊歷險記

1 年 10 個月 ago

silicone

人類真是一種容易習慣的動物。

我輕輕鬆鬆就習慣了禮拜一不上班這回事,其實不過也才12/25閉著眼睛過耶誕和1/1大力跨年去而已,

但習慣了就是習慣,總得來說這禮拜一我只差沒揪緊眉頭拎著哀怨來上班。


但是!對的,就是但是(淚目)

老闆叫我要寫一篇博文,而且還指定了題目!

(頭家啊~你知道嗎,小的身為一介廢文界的行家,就算指定題目,寫出來的還是廢文啊哈哈哈)

不過,領人錢財為人消災,介紹矽膠腳墊是吧,寫就寫,來囉!

客倌們快跟上,輸人不輸陣,尤其跟風這回事。


荒野中的一枚矽膠腳墊

瞧瞧這孩子,淒凜堅勁的站在荒漠的鍵盤上,多麼帥(不)氣(知)凜(所)然(以)啊~~~

【矽膠腳墊】
規格:高11mm、直徑6mm
硬度:60度
顏色:矽膠原色
適用:Ø5mm六角銅柱
功用:矽膠腳墊完整包覆六角銅柱,能達到顯著的止滑功效,亦能提供良好的防震能力、耐熱效果。
 

unisilicone
打完了矽膠腳墊的基本資料,應該算是介紹完了吧!(其實只不過是我無限辭窮罷了)

這幾行簡單的敘述,讓人不禁遙望把個月前啊~

接到了製作矽膠腳墊的任務後,從矽膠的特性、應用開始研究,好久不見的化學,總有種驀然回首原來你一直都在感

再來便要畫張模具圖,天啊!小的無才,聽到模具圖都想立正了,竟...竟...竟然要畫出它來!

好吧,雖然簡陋到爆炸,但我還是完成了(灑花轉圈)

再後來就是一連串的尋找廠商拜訪廠商探探工廠逼逼價打聲招呼說你好,這又是另一段故事了。

 

看看標題再看下內文,歷險記是歷到哪裡去了......

還沒開始就累了,然後用最快速度果斷放棄

容易辭窮的人真是不能欠缺自知之明,以為千字廢文是小事,但中途辭窮無數次啊QAQ

但我想我的優點大概是逼死自己,好的,那麼就來立志:「每個禮拜產出一篇千字廢文。」

 

don_trump

圖片來源: JIM WATSON / AFP


提到廢文就想到最近看到美國方言學會(American Dialect Society)票選出2017年的關鍵字了

2017年度關鍵字:fake news(假新聞)
                     定義:1. 把虛假的訊息當成真實的事報導
                                 2. 實際的事情卻對外宣稱是虛假的

說穿了就是把假的當真的、把真的當假的,不談中間牽涉的所有問題,某部份而言還挺浪漫的啦!

但是我要提的是2017網路世界的關鍵字(DIGITAL WORD OF THE YEAR)是「廢文(Shitpost)」

廢文(Shitpost):發佈無意義或不相關的內容,目的在挑起群眾情緒或轉移注意力

OhOh廢文集聚好像真有點糟糕,風向好亂啊~

但人生之難,小的又如此筆鈍,應該還是可以寫寫廢文吧!

附上2017年度的關鍵字票選資料,有興趣的人可以好好研究一番,然後我們還是要好好面對2018啊!

2017 Word of the Year:
https://www.americandialect.org/wp-content/uploads/2017-Word-of-the-Year-PRESS-RELEASE.pdf

Sia