ipify是一個可以取得public的的API
這是上次在看SweetAlert2範例時不小心看到的
ipify還提供相當多的程式語言範例,其中還可以指定以json的格式回傳資料
只要照著直接調用就可以了

以 PHP 來說以前我的寫法和網路上網友提供的方式是這樣子的

是不是又臭又長吶!!
但現在直接用ipify的話直接用file_get_contents呼叫API就可以了

天丫!!是不是輕鬆又愉快丫!!

而或是今天我想在shell script裡取得public IP在以往我肯定得再研究一番
但現在呢?

總之ipify還供相當多的語言(Python、Ruby、Java、Perl、Go、JavaScript、jQuery......等)
初步看來官方還提供各種語言的Libraries,可以讓您直接在Project引入呼叫
超級無敵的吶

另外官網的網址是掛載在ORG底下
看來應該也會是一個蠻穩定的Project
只是目前還不支援IPv6
可惜可惜

大家不妨也體驗看看吧!!

朋友最近介紹了一個強大的好物給我
這是一個兼具標亮及可自定義的 JavaScript彈跳視窗 SweetAlert2
雖然我還沒開始使用
但光看官網的範例就已經知道他的厲害之處了
所以不得不上來記錄一下
改天要用時才不會忘記

網路上順便爬了一下發現介紹文也不少
在vue.js上整合好像也不是問題
不過目前初看好像得先裝好webpack
但現在還沒學到webpack所以等過一陣子再來研究
另外官方的範例也蠻詳細的
所以這裡也就不多介紹了

[相關文章]

  1. 在 Vue 使用 SweetAlert2
  2. [前端] 快速上手讓人驚豔的JS alert、confirm dialog - SweetAlert2 (含整合ASP.net WebForm範例碼)
  3. SweetAlert2官方中譯版本

最近才開始研究 Vue.js
但因為JavaScript以前就寫的少
所以一切都在趺跌撞撞的狀態
就連芝麻小豆般的錯誤都可以debug一天一夜

這二天好不容易搭配 Vue-resource 成功到後端資料庫撈出資料
前端也可以渲染出資料
但Chrome的Console就是會出現一大段的錯誤

Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <script>, as they will not be parsed.

上網查找了一下
這樣子的錯誤通常是因為HTML的標籤不成對所造的
所以自己再重新檢查後
發現我的<table>少了一對</table>
補上後就好了
原來是自已在耍笨!!

最近想來玩玩 Phalcon, 但是我的OSX是安裝MAMP,所以Phalcon官方針對OSX提供的安裝方法似乎不太管用。
上網查找了一下,發現必需將MAMP裡的PHP重新再編一下,終於是裝起來了,所以,來記錄一下吧!!

1.確定你MAMP所跑的PHP版本:
這部份你可以在MAMP的console或是用phpinfo()看看
像豆子早前安裝的版本就是 PHP 5.5.23

2.確認MAMP PHP bin 的目錄路徑:
一般來說 MAMP PHP bin的安裝路徑會是在
/Applications/MAMP/bin/php/phpx.x.x/bin
以上的x.x.x就是您PHP的版本
以豆子的環境來看,路徑就會是
/Applications/MAMP/bin/php/php5.5.23/binOpen

3.開開Terminal並執行下列指令:
export PATH=/Applications/MAMP/bin/php/php5.5.23/bin:$PATH

4.到PHP官網下載PHP的source檔:
這部份可能要留意一下,像豆子的PHP是5.5.23,但官網現在主要提供的版本己經到5.5.35,這是沒有關係的。
就把它下載下來,放到以下目錄:(預設是沒有include/php目錄的,請自建)
/Applications/MAMP/bin/php/php5.5.23/include/php

5.Configure the PHP source:
cd /Applications/MAMP/bin/php/php5.5.23/include/php
./configure
在這個部驟,豆子出現以下的錯誤:
configure: error: Please specify the install prefix of iconv with --with-iconv=

但明明豆子的 /usr/bin/iconv 明明就有,但怎麼指定就沒效
上網查一下,就用brew 重新安裝 libiconv吧

brew install homebrew/dupes/libiconv

然後再用以下指令重新configure

./configure --with-iconv=brew --prefix libiconv

之後就會看到Thank you for using PHP.的訊息啦

6.Compile Phalcon:
接著下載Phalcon回來Compile
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install

這階段豆子又卡關了。。。
出現:$PHP_AUTOCONF environment variable. Then, rerun this script.
所以,用brew再裝裝autoconfig再重新configure
brew install autoconf

7.在php.ini裡加入phalcon extension file
如果不知道你的php.ini在那裡,用phpinfo()看一下最保險
在php.ini裡加上
extension=phalcon.so

8.重啟MAMP

9.檢查:
在phpinfo()的資訊裡應該就會多一個 phalcon的相關資訊囉

phalcon

最近幫同事解這個問題
話說這台 HP DL320E G8 還真是折磨人
去年在這一台上安裝CentOS 6
但就發現
明明做了Raid 1
但在安裝作業系統裡還是會看到二顆硬碟
當時翻找了很多文章才知道是抓不到磁碟陣列卡的驅動
(裝了不少主機的經驗,這還是頭一遭)
最後到官網下載DD檔,解壓縮後放到隨身碟
在centos 6 安裝的前導畫面
載入USB裡的驅動後
終於是可以認到Raid了
但卻發現系統裝好後作業系統會開不起來

Continue reading

1.先移除系統原本的mysql-libs
yum remove mysql-libs

2.到官網下載最新版本的rpm,並安裝
wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
rpm -Uvh mysql57-community-release-el6-7.noarch.rpm
yum install mysql-community-server

3.接著就可以啟用服務了
service mysqld start

4.用這種方法裝好的mysql,其預設的root密碼是藏在/var/log/mysqld.log裡的
所以more一下就可以看到
2016-02-03T08:11:46.993568Z 1 [Note] A temporary password is generated for root@localhost: ,F1WDenwkXBu
上面的,F1WDenwkXBu就是密碼,每個人安裝後的臨時密碼並不會相同

5.別忘了利用mysql_secure_installation工具設定root密碼,並將一些anonymous的帳號及非localhost的權限拿掉,就大功告成囉

更詳細的安裝方法可以參考官網的手冊

因為資安驗證規範要求密碼需設定有效期
所以,得修改系統的設定值
方法如下:

#vi /etc/login.defs
修改PASS_MAX_DAYS的設定值就可以了
不過以上的設定是針對設定後,新增加的帳號才會套用新的設定值
若要針對先前己建立的帳號
可以用以下的指令:
#passwd -x 天數 帳號
例:#passwd -x 60 root

如果要再改回never,把天數設成-1就可以

還有一個chage的指令可以做進階的設定:
例:
chage -m 0 -M 90 -W 15 root
以上命令表示設置使用者root的密碼最小有效期為0天,最長有效期為90天,在密碼過期前15天對用戶進行提醒

指令參數如下:
-m 密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M 密碼保持有效的最大天數。
-W 使用者密碼到期前,提前收到警告資訊的天數。
-E 帳號到期的日期。過了這天,此帳號將不可用。
-d 上一次更改的日期
-i 停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用。
-l 例出當前的設置。由非特權使用者來確定他們的密碼或帳號何時過期。

所以,如果要查詢某一個帳號目前的狀態可以用:
chage -l
系統會顯示如下的資訊出來:
Last password change : Feb 02, 2016
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7

以上備忘!!

去年就發佈的CentOS 7 很多地方都做了很大的改變
感覺和當年的Fedora一樣
讓你愈改愈覺得不上手
所以後來才會改跳到CentOS
沒想到現在連CentOS也.....

唉!!
今天特地找了個時間小試了一下
目前知道和CentOS 6不同的地方有

1.服務的管理使用改了
改由 systemctl 來控制
例:
start httpd.service
真是又臭又長丫
雖然用舊的service指令仍然可以運作
但你還是會看到系統會Redirecting 到systemctl

2.預設的DB由MySQL改成MariaDB
雖然MariaDB就是的MySQL轉化來的
也發展好幾年了
操作方式也一樣
phpMyAdmin也可以用在MariaDB上
只是直接變成系統的預設DB
第一時間不習慣而己

3.防火牆由iptables變成了Firewalld
這是我最不適應的地方
平時習慣直接編輯 /etc/sysconfig/iptables
確發現CentOS 7找不到這個檔
才發現系統預設的防火牆改成Firewalld
但還好
iptables還是有
自己yum install一下就好了
但記得先把firewalld先關掉
整個程序基本上如下:

systemctl stop firewalld
systemctl mask firewalld
yum install iptables-services
systemctl enable iptables

目前是今天遇到的大異動
據我所知好像還不止這些
剩下的就有空慢慢玩囉

docker 自建Registry後,將images檔push出去時會出現下以的錯誤:
root@docker:~# docker push 172.17.42.1:5000/httpd-dowdot
Error response from daemon: invalid registry endpoint https://172.17.42.1:5000/v0/: unable to ping registry endpoint https://172.17.42.1:5000/v0/
v2 ping attempt failed with error: Get https://172.17.42.1:5000/v2/: EOF
v1 ping attempt failed with error: Get https://172.17.42.1:5000/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add --insecure-registry 172.17.42.1:5000 to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/172.17.42.1:5000/ca.crt

解法:
在/etc/default/docker加入以下參數,再把docker服務重啟就可以了
DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=172.17.42.1:5000"

如果您曾經用過windows自帶的「命令提示字元」的經驗,想必會覺得很難用又不方便吧!(連用個copy、past都另人不順手)

其實平時用它的機會並不高,通常只拿它來做簡單的網路除錯想說就忍著用,不過最近安裝了Git,其中的Git Shell就是PowserShell。

powershell2

Windows PowerShell微軟公司Windows環境所開發的shell腳本語言技術,採用的是命令列介面。讓Windows 作業系統也能擁有類似 UNIX BASH 的 Shell 環境

結果豆子用習慣後想說就直接取代那個不好用的「命令提示字元」,唯讀那個字型和配色,另人覺得不順眼....
上網查了一些資料,發現為什麼有些網友的PowerShell和豆子長的不太一樣,功能豪華多了...

原來Git Shell安裝的PowserShell是2.0版,而PowerShell還有另一個PowerShell ISE的應用程式,是ISE才有豪華功能唷。

MicroSoft TechNET: PowerShell 整合式指令碼環境 (ISE) 是 Windows PowerShell 的主機應用程式。在 Windows PowerShell ISE 中,您可以在單一 Windows 圖形使用者介面中,利用多行編輯、Tab 鍵完成功能、語法著色、選擇性執行、即時線上說明以及對從右至左語言的支援,執行命令,撰寫、測試並進行指令碼測錯。 使用功能表項目和鍵盤快速鍵可以執行許多與 Windows PowerShell 主控台 所執行的相同的工作。例如,在 Windows PowerShell ISE 中偵錯指令碼時,若要在指令碼中設定行中斷點,請以滑鼠右鍵按一下程式碼行,再按一下 [切換中斷點]。

豆子用的作業系統是Windows 7,預設也只配置PowerShell 2.0,在 Windows Server 2012、 Windows Server 2012 R2、Windows 8 或 Windows 8.1,才會預先配置 PowerShell 3.0。不過Windows 7也還是能裝  PowerShell 3.0唷...直接到官網直接下載 Windows Management Framework 安裝就可以了!!

在 Windows PowerShell 主控台中,輸入下列命令就可以觀看PowerShell的版本:

 powershell

顏色配置

光裝好,顏色還是醜的。所以,接下來就是幫PowerShell客制化主題顏色了,上網找了一下,發現有網友分享Sublime風格的配置腳本檔(參考網站1),因為豆子平時就慣用Sublime,這配置檔實在是令人開心啦!!

下載回來的檔案解開後一共有二個檔,包含一個字型檔和PowerShell的腳本檔(副檔名為ps1),字型檔的部份您可自行斟酌是否要安裝及套用。

powershell3

腳本檔是純文字檔,您可以用PowerShell直接打開並點選上方的「執行指令碼(F5)」功能就可以套用。

powershell5

可是當 PowerShell 執行 script 檔時,卻出現一堆錯誤,並中「檔案無法載入,因為這個系統已停用指令碼執行」的訊息,這是因為作業系統目前的執行原則 ( Excution Policy ) 預設狀態為 Restricted(不允許執行)所造成的,是為了防止有惡意的腳本被執行。

您可以用下面的指令確定目前的執行策略:

所以您必需將執行策略由Restricted改成Unrestricted,不過在更改前您必需先將PowerShell關閉再重新開啟,並指定由「系統管理員執行」,否則是改不成功的唷!!

powershell6

接下來就是用以下的指令更改執行策略:

註:ExecutionPolicy可以設定的策略有:

1. Restricted - 腳本不能運行。
2. RemoteSigned - 本地創建的腳本可以運行,但從網上下載的腳本不能運行(除非它們擁有 由受信任的發佈者簽署的數位簽章)。
3. AllSigned – 僅當腳本由受信任的發佈者簽名才能運行。
4. Unrestricted – 腳本執行不受限制,不管來自哪裡,也不管它們是否有簽名。

更改完成後,您會發現腳本就可以成功執行了,而且執行完佈景就設置完成了,有了美美的顏色,字型也大多了!!

powershell8

 進階用法:

在PowerShell裡除了可以直接用Ctrl+C、Ctrl+V來複制、貼上外,還可以設定Alias讓PowerShell也可以用和Linux相同的指令唷...

 

參考網站:

  1. powershell ise好字库和diy配色文件分享
  2. 在 Lync Online 中下載並安裝 Windows PowerShell 3.0
  3. Windows PowerShell ISE 簡介
  4. PowerShell Tutorial 3: PowerShell Aliases
  5. 有关PowerShell脚本你必须知道的十个基本概念
  6. 淺談Windows PowerShell 管理技術