國民年金的計算分為A、B兩個算式,A式多了3,628元的「福利金」,而B式則是給有請領其他社會保險年金,但也有國保年資的民眾請領。
徐嘉珮認為,雖然國保的給付金額,相對少於勞保,但對比於一般商業保險,由於商業獲利需要,保戶需負責全額費率,但國民年金由政府負擔4成,若是身為低收入戶或是重度身心障礙人士,免繳保費也享有國民年金的請領資格。
國民年金監理會委員郝充仁認為,在社會保險中,國民年金的財務是相對健全的,破產時程在勞保之後。
十年大限將至,許多人積欠了十年的保費,無法一次付清,徐嘉珮說明,勞保局有提出40期分期繳納的方案,也能選擇小額繳納,若分期到一半無法支付,也能申請三個月的延期繳納,希望能讓更多民眾有繳款意願。
釐清window和document的區別以及兩者的寬高
完整的圖文詳閱 https://www.jianshu.com/p/b28a4dcd1b8c
以下僅為文字備存,缺少了圖解
window.screen.height(整个屏幕的高。。固定值)
window.screen.width(整个屏幕的宽。。固定值)
window.screen.availHeight(可利用的高,即不包括浏览器Google属性栏。。固定值)
window.screen.availWidth(可利用的宽,与window.screen.width是一样的。。固定值)
window.screenTop(浏览器顶部距屏幕顶部的距离。。随浏览器的缩放以及位置决定)
window.screenLeft(浏览器左侧距屏幕左侧的距离。。随浏览器的缩放以及位置决定)
1> 该属性指的是元素的可视部分宽度和高度,即padding + content。
2> 如果没有滚动条,即为元素设定的高度和宽度。
3> 如果出现滚动条,那么滚动条会遮盖元素的宽高,那么该属性就是其本来宽高减去滚动条的宽高。(注意:mac系统下滚动轴不占宽度)
总结:
假如无padding无滚动:clientWidth = style.width
假如有padding无滚动:clientWidth = style.width + style.padding*2
假如有padding有滚动,并且滚动轴是显示的:clientWidth = style.width+style.padding*2 - 滚动轴宽度
clientTop和clientLeft
这两个返回的是元素周围边框的厚度,如果不指定一个边框或者不定位该元素,它的值就是0.
总结:
这一对属性是用来读取元素的border的宽度和高度的。
clientTop = border-top的border-width(边框像素)
clientLeft = border-left的border-widrh(边框像素)
1> 这一对属性指的是元素的border + padding + content的宽度和高度。
2> 该属性和其内部的内容是否超出元素大小无关,只和本来设定的border以及width和height有关。
总结:
假如无padding 无滚动 无border:offsetWidth = clientWidth = style.width
假如有padding 无滚动 有border:offsetWidth = style.width+style.padding·2 + (border-width)·2 或者 offsetWidth = clientWidth + (border-width)·2
假如有padding 有滚动 有border:offsetWidth = style.width+style.padding·2 + (border-width)·2 或者 offsetWidth = clientWidth +滚动轴宽度 + (border-width)·2
offsetLeft与offsetTop
2> 如果当前元素的父级元素中有CSS定位(position为absolute或relative),offsetParent取最近的那个父级元素。
注意:document.body的scrollWidth和scrollHeight 与 div中scrollWidth和scrollHeight是有点区别的。
<1> document.body的scrollWidth和scrollHeight
这对属性是可读写的,指的是当元素其中的内容超出其宽高的时候,元素被卷起的宽度和高度。默认都为0 。若改写的话也是可以的改变的
以下僅為文字備存,缺少了圖解
一、window和document的区别是什么?
- window
1.window对象表示浏览器中打开的窗口。
2.window对象可以省略,如:
alert() 等价于 window.alert()
- document
1.document对象是window对象的一部分。如:
document.body 等价于 window.document.body
2.浏览器的html文档成为document对象。
二、window.location和document.location一样吗?
- window对象的location属性引用的是location对象,表示该窗口中当前显示文档的URL。
- document对象的location属性也是引用了location对象。
- 因此
window.location === document.location //true
location.herf === window.location.href === document.location.href
三、与window相关的宽高(不考虑window.document的情况下)
- window.innerWidth(打开窗口的内部宽度)与window.outerWidth(打开窗口的外部宽度)
- window.innerHeight(打开窗口的内部高度)与window.outerHeight(打开窗口的外部高度)
- window.screen包含有关用户屏幕的信息
四、与document相关的宽高(以document.body为例)
1. 与client相关的宽高
clientWidth与clientHeight
- document.body.clientWidth
- document.body.clientHeight
- document.body.clientTop
- document.body.clientLeft
1> 该属性指的是元素的可视部分宽度和高度,即padding + content。
2> 如果没有滚动条,即为元素设定的高度和宽度。
3> 如果出现滚动条,那么滚动条会遮盖元素的宽高,那么该属性就是其本来宽高减去滚动条的宽高。(注意:mac系统下滚动轴不占宽度)
总结:
假如无padding无滚动:clientWidth = style.width
假如有padding无滚动:clientWidth = style.width + style.padding*2
假如有padding有滚动,并且滚动轴是显示的:clientWidth = style.width+style.padding*2 - 滚动轴宽度
clientTop和clientLeft
这两个返回的是元素周围边框的厚度,如果不指定一个边框或者不定位该元素,它的值就是0.
总结:
这一对属性是用来读取元素的border的宽度和高度的。
clientTop = border-top的border-width(边框像素)
clientLeft = border-left的border-widrh(边框像素)
2. 与offset相关的宽高
offsetWidth与offsetHeight
- document.body.offsetWidth
- document.body.offsetHeight
- document.body.offsetTop
- document.body.offsetLeft
1> 这一对属性指的是元素的border + padding + content的宽度和高度。
2> 该属性和其内部的内容是否超出元素大小无关,只和本来设定的border以及width和height有关。
总结:
假如无padding 无滚动 无border:offsetWidth = clientWidth = style.width
假如有padding 无滚动 有border:offsetWidth = style.width+style.padding·2 + (border-width)·2 或者 offsetWidth = clientWidth + (border-width)·2
假如有padding 有滚动 有border:offsetWidth = style.width+style.padding·2 + (border-width)·2 或者 offsetWidth = clientWidth +滚动轴宽度 + (border-width)·2
offsetLeft与offsetTop
1> 如果当前元素的父级元素没有进行CSS定位(position为absolute或relative),offsetParent为body。
- 首先先要了解offsetParent这个属性:
2> 如果当前元素的父级元素中有CSS定位(position为absolute或relative),offsetParent取最近的那个父级元素。
3. 与scroll相关的宽高
scrollWidth 与 scrollHeight
- document.body.scrollWidth
- document.body.scrollHeight
- document.body.scrollTop
- document.body.scrolleft
注意:document.body的scrollWidth和scrollHeight 与 div中scrollWidth和scrollHeight是有点区别的。
<1> document.body的scrollWidth和scrollHeight
<2> div的scrollWidth和scrollHeight
- 给定宽高小于浏览器窗口
1.scrollWidth通常是浏览器窗口的宽度
2.scrollHeight通常是浏览器窗口的高度- 给定宽高大于浏览器窗口,且内容小于给定宽高(有border需乘2)
1.scrollWidth:给定的宽度 + 其所有的padding、margin和border
2.scrollHeight:给定的高度 +其所有的padding、margin和border- 给定宽高大于浏览器窗口,且内容大于给定宽高(给定宽高有border不需乘2)
1.scrollWidth:内容宽度 + 其所有的padding、margin和border
2.scrollHeight:内容高度 + 其所有的padding、margin和border
scrollLeft 和 scrollTop(以div为例)
- 无滚动轴的情况
scrollWidth = clientWidth = style.width + style.padding · 2- 有滚动轴时
scrollWidth = 实际内容的宽度 + padding · 2
scrollHeight = 实际内容的高度 + padding · 2
这对属性是可读写的,指的是当元素其中的内容超出其宽高的时候,元素被卷起的宽度和高度。默认都为0 。若改写的话也是可以的改变的
PushState + Ajax = Pjax
單頁面應用(Single Page Application)簡稱 SPA,使用 SPA 理念構建的應用優點有用戶體驗好、速度快,內容的改變不需要重新加載整個頁面,避免了不必要的跳轉和重複渲染,從而相對減輕了服務器壓力。
實作上,使用 HTML5 的 PushState + Ajax 可實現不刷新整個頁面卻可讓地址欄變換、頁面局部刷新的效果。
在 SEO 方面,Google官方宣布不再繼續支持2009年以來的AJAX的googlebot檢索。
Google建議在建置網站時應該使用漸進增強的原則。
如果已經實施了Google關於AJAX的建議 ,Google表示網站仍然會被索引,但建議網站應支援新的隨時間變化的作法。
具體解釋window.history:
https://tw.saowen.com/a/022ff7a00a0cc0214313135aba4cbc178a59784adda3bf0a6120038b205eac9c
PushState+Ajax實現簡單的單頁面應用SPA:
https://www.itread01.com/articles/1476680423.html
ajax与HTML5 history pushState/replaceState实例
https://www.zhangxinxu.com/study/201306/ajax-page-html5-history-api.html?area=pudong
Javascript實現前端簡單路由:
https://www.itread01.com/articles/1476578707.html
PushState and Ajax
http://www.ayqy.net/blog/pjaxpushstate-and-ajax/
pjax = pushState + ajax (一個開源的 jQuery plugin)
https://github.com/defunkt/jquery-pjax
了解 Ajax 漏洞
Ajax 吸引 Web 開發人員的地方也是對其安全性最易受威脅的地方。眾多安全專家一致認為 Web 應用程序是網絡犯罪的一大目標,但是 Web 安全通常只是企業安全預算的一小部分。由於 Ajax 被用於開發很多可在 Web 上看到的應用程序,因此它的流行使其成為攻擊者在 JavaScript 代碼中尋找漏洞的目標。
Ajax 存在的核心是可以用它來創建數據驅動網站。真正吸引攻擊者的不是可以將 Ajax 用作 Web 應用程序開發工具,而是數據,不管是金融數據、個人數據還是機密數據,都是珍貴的在線商品,Ajax 再次發現自己成為了網絡犯罪的焦點。
在使用 Ajax 進行開發時,可以採用以下步驟防止出現 XSS 漏洞
確保 JavaScript 變量被引用。
使用 JavaScript 十六進制編碼。
使用 JavaScript Unicode 編碼。
避免反斜杠編碼(\"、\' 或 \\)。
使用 JSON.parse 或 json2.js 庫來分析 JSON。
避免使用 eval() 方法分析 JSON,它執行任何包含 JSON 的腳本。
要避免Ajax 橋接漏洞,在橋接時除了需要與第三方的站點之間建立信任,也應該審核第三方站點以何種方式訪問您的站點,並掃描可能被橋接利用的任何漏洞。
與 Ajax 相關的資安議題應詳閱 https://www.ibm.com/developerworks/cn/web/wa-vulnerabilities/index.html
資安風險:
駭客的攻擊方向之一恐怕會是尋找該應用的 Javascript 編程漏洞,另一個攻擊方向可能是 XSS、SQL注入,或是將目標放在大量的用戶資訊等容易被輕忽的XML或 JSON 資料傳遞。
比如說先取得明星的粉絲 Email ,再假借明星的名義對粉絲販售商品。
由於在用戶端有各種不確定性,比如用戶可能會使用各種方式來另開分頁,所以許多細節都必須考慮在 SPA 應用編程內,而 Javascript 程式碼必須赤裸裸地開源在前端,越複雜的程式碼,透露的資訊越多,為攻擊者提供了越多的線索 (資深的程式師從一段編程,看到的不只是程序是否存在安全議題,也看得到該程式碼創作者可能是個人還是團隊、軟體管理的情況、編程習慣、資歷等)。
Ajax 受到喜愛的原因是提高了 UI/UX 用戶體驗的同時還降低了 Server 負擔,然而,顧及用戶端的許多使用細節,就是得應用更大量的前端編程;當前端設計越複雜,如果只是 CSS 這些不涉及資安的層面,對維護者的心理壓力尚輕;若一旦涉及資安,就變成越養越大的不定時炸彈了。
所以,適度地使用 Ajax 會有好處,但是過度使用則會帶來隱憂,取捨並達到平衡點就好。
實作上,使用 HTML5 的 PushState + Ajax 可實現不刷新整個頁面卻可讓地址欄變換、頁面局部刷新的效果。
在 SEO 方面,Google官方宣布不再繼續支持2009年以來的AJAX的googlebot檢索。
Google建議在建置網站時應該使用漸進增強的原則。
如果已經實施了Google關於AJAX的建議 ,Google表示網站仍然會被索引,但建議網站應支援新的隨時間變化的作法。
具體解釋window.history:
https://tw.saowen.com/a/022ff7a00a0cc0214313135aba4cbc178a59784adda3bf0a6120038b205eac9c
PushState+Ajax實現簡單的單頁面應用SPA:
https://www.itread01.com/articles/1476680423.html
ajax与HTML5 history pushState/replaceState实例
https://www.zhangxinxu.com/study/201306/ajax-page-html5-history-api.html?area=pudong
Javascript實現前端簡單路由:
https://www.itread01.com/articles/1476578707.html
PushState and Ajax
http://www.ayqy.net/blog/pjaxpushstate-and-ajax/
pjax = pushState + ajax (一個開源的 jQuery plugin)
https://github.com/defunkt/jquery-pjax
了解 Ajax 漏洞
Ajax 吸引 Web 開發人員的地方也是對其安全性最易受威脅的地方。眾多安全專家一致認為 Web 應用程序是網絡犯罪的一大目標,但是 Web 安全通常只是企業安全預算的一小部分。由於 Ajax 被用於開發很多可在 Web 上看到的應用程序,因此它的流行使其成為攻擊者在 JavaScript 代碼中尋找漏洞的目標。
Ajax 存在的核心是可以用它來創建數據驅動網站。真正吸引攻擊者的不是可以將 Ajax 用作 Web 應用程序開發工具,而是數據,不管是金融數據、個人數據還是機密數據,都是珍貴的在線商品,Ajax 再次發現自己成為了網絡犯罪的焦點。
在使用 Ajax 進行開發時,可以採用以下步驟防止出現 XSS 漏洞
確保 JavaScript 變量被引用。
使用 JavaScript 十六進制編碼。
使用 JavaScript Unicode 編碼。
避免反斜杠編碼(\"、\' 或 \\)。
使用 JSON.parse 或 json2.js 庫來分析 JSON。
避免使用 eval() 方法分析 JSON,它執行任何包含 JSON 的腳本。
要避免Ajax 橋接漏洞,在橋接時除了需要與第三方的站點之間建立信任,也應該審核第三方站點以何種方式訪問您的站點,並掃描可能被橋接利用的任何漏洞。
與 Ajax 相關的資安議題應詳閱 https://www.ibm.com/developerworks/cn/web/wa-vulnerabilities/index.html
資安風險:
駭客的攻擊方向之一恐怕會是尋找該應用的 Javascript 編程漏洞,另一個攻擊方向可能是 XSS、SQL注入,或是將目標放在大量的用戶資訊等容易被輕忽的XML或 JSON 資料傳遞。
比如說先取得明星的粉絲 Email ,再假借明星的名義對粉絲販售商品。
由於在用戶端有各種不確定性,比如用戶可能會使用各種方式來另開分頁,所以許多細節都必須考慮在 SPA 應用編程內,而 Javascript 程式碼必須赤裸裸地開源在前端,越複雜的程式碼,透露的資訊越多,為攻擊者提供了越多的線索 (資深的程式師從一段編程,看到的不只是程序是否存在安全議題,也看得到該程式碼創作者可能是個人還是團隊、軟體管理的情況、編程習慣、資歷等)。
Ajax 受到喜愛的原因是提高了 UI/UX 用戶體驗的同時還降低了 Server 負擔,然而,顧及用戶端的許多使用細節,就是得應用更大量的前端編程;當前端設計越複雜,如果只是 CSS 這些不涉及資安的層面,對維護者的心理壓力尚輕;若一旦涉及資安,就變成越養越大的不定時炸彈了。
所以,適度地使用 Ajax 會有好處,但是過度使用則會帶來隱憂,取捨並達到平衡點就好。
如何使用 font-display:系統預設字型 vs 自定義字型
https://www.astralweb.com.tw/use-font-display-to-improve-and-optimize-website/
在 @font-face 規則出現之前,網頁只能使用所謂的”web-safe”(無需下載,電腦預設擁有)中的字型,而在有了@font-face的規則幫助下,我們才開始能夠定義、上傳及使用自己喜好的字型,這不但顛覆了以往網頁設計與印刷設計必須分開裡的最大障礙,同時也造就了日後如Google Fonts這類提供各種字型的服務,然而使用@font-face會有一個隱憂,那就是字型檔可能會很大,意味者使用者需要付出額外的時間下載這些檔案來呈現網頁,尤其在網路相較緩慢的形況下,更甚是網路流量有限的使用者,這將成為限制他們使用的因素之一。
所以為了改善優化此情況,@font-face新增了一項屬性:font-display,font-display使我們可以照字型下載/讀取速度來決定呈現方式。
何謂”FOUT”與”FOIT”?
FOUT(flash of Unstyle Text ):即設定的@font-face於加載完成之前會先顯示瀏覽器預設的字型。過往的瀏覽器預設多為此。
FOIT(flash of Invisible Text ):即設定的@font-face於加載完成之前會先隱藏內容到字型加載完成後再跳出顯示。現今瀏覽器預設多為此。
不論是FOUT還是FOIT都有各自的優缺點,所以如何在這兩者中取得適當的平衡就是font-display的功能。
font-display屬性:
- auto(default):使用各瀏覽器自身的預設值,通常與block相似。
- block:當字型加載完成前會先隱藏內容,直到自定義字型完全被加載完成後顯示。更正確的說法為,瀏覽器會使用一個匿名且隱形的替代字型或者說是佔位符號,來短暫地代替原本的內容,直到字型下載好後立即交換。即先前所描述的FOIT。
- swap:瀏覽器使用自身的預設字型(備用字型),直到自定義字型加載完成後切換。即先前所描述的FOUT。
- fallback:介於auto與swap的中間值,瀏覽器會先短暫地隱藏內容,直到自定義的字型加載完成後再進行切換。但如果加載的時間過長,則使瀏覽器的預設字型(備用字型)取代之。(等待加載時間約為3秒)
- optional:行為模式與fallback相似,差別在於此值會自行判定是否要加載使用者的自定義字型,取決於使用用戶的網路環境,對於網速過慢、收訊較差的使用者來說相當合適,可以省去不必要的下載時間並順利地檢視內容。
以下是各值在自定義字型加載完成前所對應的隱藏時間與加載完成後切換字型的對應表,可以當作一個使用的參考:
| 隱藏時間 | 切換時間 | |
| block | 短 | 永久 |
| swap | 無 | 永久 |
| fallback | 極短 | 短 |
| optional | 極短 | 無 |
瀏覽器支援度方面,除了IE與Edge尚無支援之外,一般常用瀏覽器都有支援font-display。
由於每個網頁的內容與設計都大有差異,有時後取決於設計師想給予使用者的體驗為何,是想給予最好的呈現呢?還是想兼顧到所有使用者?
雖然現今的瀏覽器大多預設為FOIT的模式,但設計師們大多傾向於使用FOUT,畢竟要是自定義字型加載不順利的話內容就會一直呈現空白了,且各瀏覽器的預設動作大多也會避免這種情形的發生,然而這並不代表FOIT完全是不好的,在一些特殊的情形下,寧願不顯示或許反而是比較好的!所以考慮到了各種情況,我們可以適當地使用適合的font-display屬性帶來最佳的效果。
如何使用Google Fonts
SVG 動畫入門指南
原文:https://medium.com/sketch-app-sources/b2b92efc4d77
https://www.w3schools.com/graphics/svg_intro.asp
http://www.oxxostudio.tw/articles/201410/svg-tutorial.html
https://www.astralweb.com.tw/vivus-bringing-your-svgs-to-life-i/
本次重點是利用 SVG 的stroke-dasharray和stroke-dashoffset屬性與 CSS3 animation 結合做出類似手寫風格的動畫。
1.產出 SVG 向量
最快速的方法是利用 Illustrator 或 Sketch 繪製圖形後轉存 .svg,再使用編輯器節錄其中 <path> 路徑標籤。
2.了解Stroke-dasharray 與 Stroke-dashoffset
Stroke-dasharray:線段的「虛線間距」,可為單一值或可以是一陣列
Stroke-dashoffset: 線段的「偏移量」,要實現動畫則要動態改變這個偏移值
3.利用@keyframes實現動態
這樣就可以簡單自己完成基本 SVG 動畫,若再搭配其他屬性則會有更多有趣的呈現 (詳細可參考 https://www.w3schools.com/graphics/svg_intro.asp )
如果套用 vivus.js ,只要加上一些參數設定,可迅速製作出多層次又具有質感的 SVG 動畫。
https://www.w3schools.com/graphics/svg_intro.asp
http://www.oxxostudio.tw/articles/201410/svg-tutorial.html
https://www.astralweb.com.tw/vivus-bringing-your-svgs-to-life-i/
本次重點是利用 SVG 的stroke-dasharray和stroke-dashoffset屬性與 CSS3 animation 結合做出類似手寫風格的動畫。
1.產出 SVG 向量
最快速的方法是利用 Illustrator 或 Sketch 繪製圖形後轉存 .svg,再使用編輯器節錄其中 <path> 路徑標籤。
2.了解Stroke-dasharray 與 Stroke-dashoffset
Stroke-dasharray:線段的「虛線間距」,可為單一值或可以是一陣列
Stroke-dashoffset: 線段的「偏移量」,要實現動畫則要動態改變這個偏移值
3.利用@keyframes實現動態
這樣就可以簡單自己完成基本 SVG 動畫,若再搭配其他屬性則會有更多有趣的呈現 (詳細可參考 https://www.w3schools.com/graphics/svg_intro.asp )
如果套用 vivus.js ,只要加上一些參數設定,可迅速製作出多層次又具有質感的 SVG 動畫。
南非貪腐纏身
以「彩虹國度」之名被寄予希望和祝福的南非,是非洲黑暗大陸上最璀璨的一顆明珠。但曾幾何時,非洲最大經濟體的寶座已被奈及利亞奪去,居高不下的失業率和層出不窮的貪腐事件,成了人民心裡的最痛。
諾貝爾和平獎得主、南非大主教屠圖(Desmond Tutu)1994年喊出「彩虹國度」,希望當時已結束種族隔離政策的南非,所有族群能互相包容尊重,和平共存。那一年,南非舉行史上第一次民主選舉,帶領國家和平結束種族隔離政策的曼德拉眾望所歸,當選南非第一任民選總統。他的成就自然無人能及,但他只做了一任,四年後就告老還鄉。當時他屬意的接班人是位人權律師,也就是現任副總統拉瑪佛沙。不過在非洲民族議會(ANC)黨內流亡人士派的堅持下,姆貝基(Thabo Mbeki)成為曼德拉的副手,且在1999年的第二次民主選舉中當選總統。
在姆貝基領導下,南非經濟以每年平均4.5%的速度成長,中產階級也獲得大量工作機會。在黑人經濟振興法案實施下,黑人中產階級迅速擴大。流向非洲的外國直接投資(FDI)大多進了南非,金磚國家從四國(BRIC)擴大成五國(BRICS)雖不在姆貝基任內發生,但仍受惠於他執政時打下的基礎,南非也從此成了非洲大陸經濟的最亮點。
姆貝基也不乏弊案纏身,至少貪腐的程度不像現任總統祖馬那麼誇張。祖馬沒受過正式教育,有四個妻子,一開始只是ANC的安全主管,在2008年的黨內選舉一舉擊敗姆貝基,並強迫姆貝基辭職,但南非也就從此踏上衰敗之途。祖馬上任後,官商勾結、綁標、掠奪國家資產,什麼都來,不配合的官員就開除。從還沒當上總統到現在,大大小小涉及近800樁詐欺或貪汙案,卻總是能全身而退,因此有了「鐵氟龍總統」之稱。
ANC數十年來一向以民主改革與發展的統一力量自居,但在祖馬當政這段時間當然也變了。在去年的地方選舉中兵敗如山倒,同時失去行政首都普里托利亞和經濟重鎮約翰尼斯堡兩地的控制權,和盟黨的關係也陷入冰凍,ANC想在2019年的總統和地方大選中勝利看來希望渺茫。
ANC的問題核心,或許可歸因於古普塔(Guptas)這個家族。古普塔家族三兄弟1993年從印度北方的一個貧窮的小鎮移民南非,從電腦產業起家,之後事業版圖擴及礦業、航空業、能源、科技等多種行業,還開辦報紙和電視。古普塔家族甚至成了地下政府,很多國家大事都直接在約翰尼斯堡的古普塔家豪宅裡就決定。國庫成家庫更不用說,南非的主要軍事機場用來接送古普塔家族婚禮的賓客,連婚禮的費用也多由地方政府埋單。
去年全球各地的經濟罕見地幾乎同步擴張,南非卻一直未從2008年的金融海嘯中復原,過去五年GDP成長率在1%以下掙扎,人口卻以1.6%的速度成長。2017年7月南非央行宣布五年首見的降息,基準利率調降1碼至6.75%,主要是為了避免經濟陷入衰退。央行總裁克干雅哥(Lesetja Kganyago)當時表示,經濟繼2017年第1季意外萎縮後,成長前景進一步惡化,已經連兩季負成長,雖然短期內預料將有改善,但前景依然充滿挑戰。
南非的種族和性別不平等問題也由來已久,60%的南非人年所得不到3,090美元,但2.2%的人年收入超過2.6萬美元。貧困依然多是黑人的遭遇。8%的人口被歸類為貧窮,但90%的南非黑人就屬於這一個族群。
惠譽2017年6月將南非2017 GDP成長率預測值從1.2%腰斬至0.6%,在那之前兩個月,惠譽才把南非的信評打入垃圾級,因為祖馬先前連續開除兩位備受尊崇的財長。但對國家傷害更深的,其實是祖馬本身的貪腐,鏽蝕了整個國家機器。
如果南非的情況這麼糟,為何南非MSCI指數的表現還能優於其它新興市場?以MSCI去年底公布的報告來看,MSCI南非指數最近一個月的淨報酬率達8.8%,高於MSCI新興市場指數的3.59%;近三個月的報酬率更達21.37%,遠高於新興市場整體的7.49%。
去年商品價格普遍回升,帶動礦商股價上漲,應是南非股市表現傲人的一大原因。不過風險分析業者Verisk Maplecroft 仍警告,南非的投資吸引力已愈來愈低,根據該公司去年7月(最新)公布的資料,南非未來十年的經濟展望都很暗淡。
報告指出,南非的經濟成長將依然遲滯,「導致失業率繼續上升,因為不平等衍生的問題也會愈來愈多。在此同時,工會保障工作的壓力,將點燃多場罷工,降低主要產業的生產力」。
而南非最大的投資風險,便是政局不穩定。當時Verisk Maplecroft認為,ANC下一任黨魁將決定該黨是繼續左傾,或者改採較親商的立場。若維持祖馬時代的政策,經濟只會持續低迷不振。而如今ANC選出「眾望所歸」的拉瑪佛沙,南非是否就能從此改頭換面、重整旗鼓,有待繼續觀察。
一張海報背後,藏著台灣單車王國15年最大危機
攤開經濟部資料,台灣自行車成車出口量與出口值,從最高峰的2015年到2017年,短短兩年間量縮近4成、值跌近3成,且未見止跌跡象;2018年前7個月,累計出口量持續衰退約46%,出口總金額也有約17%的跌幅。
不僅如此,台股自行車三雄巨大、美利達、桂盟,2015年最高點迄今合計市值腰斬,3年蒸發逾1100億元。模範生產業為何陷入重度衰退?原來台灣自行車在過去三年,相繼遭遇三股強勁逆風襲擊。這三道逆風由近而遠,第一道正是戰火密布的中美貿易戰。
關稅大戰,打亂遊戲規則
9月28日在自行車聚落台中登場的「自行車週」,展場入口一張黑底藍字的海報,透露出台灣自行車產業的集體焦慮!除用大寫粗體字寫著「Overcome Trade War(戰勝貿易戰)」,副標題的訴求是,「在中國生產主結構,然後在台灣完成組裝並出口」,以躲避美國對中國的懲罰性關稅,藉此吸引海外買家來台採購。
自行車和所有台商製造業一樣,擅長「台灣研發、中國生產、全球行銷」的布局,據估計,台灣所有自行車廠(含成車與零組件),有超過7成都在中國設廠。而每年,中國出口自行車產值有2成來自台商,故台商成為中美貿易戰首當其衝的受災產業。
不僅如此,台商需要擔心的還有歐盟對中國紅色供應鏈的圍堵。歐盟委員會自今年7月20日起,對巨大自中國出口的電動自行車課徵的反傾銷稅,從先前的6%提升到27.5%,這也讓台灣自行車產業面對的貿易關稅壓力,更較其他產業來得沉重。
電動單車,最賺錢的腦袋變別人的
就像特斯拉殺入汽車產業,自行車產業也面對產品典範轉移,2017年從歐洲爆發的電動自行車(e-bike)商機,德國機電大廠博世(Bosch)扮演橫空搶走產品規格話語權的程咬金,遭遇隔行打劫是第二道逆風。
深耕電動自行車21年的菲力工業總經理簡敬修指出,德國博世早在5年前,就挾著長期在汽車產業累積的技術優勢,跨界搶進電動自行車控制系統、馬達與電池這三個最核心領域,美利達也採用其系統。
「最賺錢的腦袋變成別人的,台灣只靠買別人東西來組裝、拉高售價,就算出口產值因此提高,錢還是別人賺走,這樣的數字只是假象罷了。」一位自行車零件廠主管私下如此評論。
共享模式,以租代買壞行情
第三道逆風,則是共享單車的駭入。東海大學工業工程與經營資訊學系教授劉仁傑指出,台灣自行車產業是這波共享單車最明顯的受害者。
美利達副總經理鄭文祥說,原本美利達在中國市場一年銷量達100萬輛,巨大更高達200萬輛,但共享單車崛起後,美利達到今年上半年為止,中國銷量大約已跌掉3成,「我相信同業狀況也差不了多少。」他表示。
深入中部自行車聚落,採訪超過十多家指標業者,我們發現逆勢突圍的3個關鍵。首先是跨國境布局新產地。例如巨大在荷蘭設物流中心、在匈牙利蓋新廠;美利達則運用德國閒置地,直接擴建電動車組裝線。
其次是跨領域找異業商機。例如全球最大鏈條廠桂盟,購併福斯汽車供應鏈旗下部門,搶進汽、機車鏈條市場。腳踏板大廠鋐光,則搶下國產電動機車發熱手把訂單、攻進矽膠脊髓填充物市場。
最後則是跨營運學賺管理財。巨大輸出台灣YouBike系統與管理經驗至福建省泉州市等海外城市,建置共享公共運輸服務
台灣自行車產業,過去歷經代工轉品牌、產業外移空洞化等多次衝擊,卻總能在危機中不斷升級轉型,締造自行車王國的美名與強韌實力。回首來時路,哪一次不是逆風越大、飛得越高越遠,誰敢說台灣自行車在新變局中,沒有再次破風突圍的勝算?
流暢的分頁
https://segmentfault.com/a/1190000016170368
這篇文章的目錄:
擴展scroll view有什麼問題?
流暢的分頁
網絡服務器的考慮
-- 分段結果
iOS實現以及示例代碼
-- NSFetchRequest
-- 流利的分頁的架構
-- UITableViewController和UICollectionViewController實現
-- 如何獲取
-- 更多改善和產品環境
結束語
這篇文章的目錄:
擴展scroll view有什麼問題?
流暢的分頁
網絡服務器的考慮
-- 分段結果
iOS實現以及示例代碼
-- NSFetchRequest
-- 流利的分頁的架構
-- UITableViewController和UICollectionViewController實現
-- 如何獲取
-- 更多改善和產品環境
結束語
頁面滾動的監聽
https://liyaoli.com/2015-08-17/about-scroll.html
這篇文章涉及到“滾動條”的相關東東。
需求(兼容性IE9 +)是類似於stickUp.js一樣的效果,根據頁面的滾動(滾動),對導航條的位置進行不同的調整。除此之外,點擊首屏的按鈕,頁面會滾動到指定的次屏。
這個需求看起來很簡單,但在完成的過程中遇到了幾個問題:
頁面滾動的監聽(滾動事件監聽器)應該綁定在哪個元素上?窗口,doucment,body,html?
通過哪個元素的何種屬性來控制頁面,使其滾動到指定的位置?
取得 body 捲動後的高度:http://www.eion.com.tw/Blogger/?Pid=1154
參考資料講解了 JavaScript 和 jQuery 兩種方式,並有範例可以線上測試效果。
這篇文章涉及到“滾動條”的相關東東。
需求(兼容性IE9 +)是類似於stickUp.js一樣的效果,根據頁面的滾動(滾動),對導航條的位置進行不同的調整。除此之外,點擊首屏的按鈕,頁面會滾動到指定的次屏。
這個需求看起來很簡單,但在完成的過程中遇到了幾個問題:
頁面滾動的監聽(滾動事件監聽器)應該綁定在哪個元素上?窗口,doucment,body,html?
通過哪個元素的何種屬性來控制頁面,使其滾動到指定的位置?
取得 body 捲動後的高度:http://www.eion.com.tw/Blogger/?Pid=1154
參考資料講解了 JavaScript 和 jQuery 兩種方式,並有範例可以線上測試效果。
指定符合網頁的文件型別宣告 <!DOCTYPE html> 正確取得 document.documentElement.scrollTop 滾動元素捲動後的高度,使用判斷方式以符合不同之 IE, Firefox, Chrome, Safari, Opera 瀏覽器。
判斷瀏覽器
document.compatMode = CSS1Compat 標準模式
window.opera Opera 顯示為 [object Opera] 其他瀏覽器則顯示為 undefined
window.opera Opera 顯示為 [object Opera] 其他瀏覽器則顯示為 undefined
JavaScript
function getScrollTop(){ var bodyTop = 0; if (typeof window.pageYOffset != "undefined") { bodyTop = window.pageYOffset; } else if (typeof document.compatMode != "undefined" && document.compatMode != "BackCompat") { bodyTop = document.documentElement.scrollTop; } else if (typeof document.body != "undefined") { bodyTop = document.body.scrollTop; } /*顯示出捲動後的高度值*/ document.getElementById("jsScrollTop").innerHTML = bodyTop; }
0
jQuery .scroll()
jQuery .scroll() 事件可用於滾動的元素和瀏覽器視窗物件 window。
只需將函數綁定到指定元素的 scroll 事件,當瀏覽者滾動指定的元素時則會觸發捲動 scroll 事件運行指定的 function 函數。
$(function () { $(window).scroll(function () { var scrollVal = $(this).scrollTop(); $("span.qScrollTop").text(scrollVal); }); });
1070
if(scrollVal > 500){ /* 如果滾動的物件捲動 > 500 則觸發指定的動作。*/ }
如何打造一個讓員工更樂於互助的團隊合作環境
錯誤的 KPI 制度,會摧毀員工的上進心!從老子《道德經》學管理
如果這件事主管根本不看重,那我也興致缺缺;一項跨部門的活動,別部門的同事詢問是否有人可以支援,但一想到自己的事情做不完,幫忙別人做好也不會反映在自己的績效上,乾脆拒絕或交差了事,做好手上的工作比較重要。
假設公司裡有許多員工都出現這樣的心態,領導者可能就得思考,將關鍵績效指標(KPI)、績效考核制度落實到極致的結果,可能會導致員工在某些被交付的任務上大小眼,甚至影響團隊氣氛。其實,如果從老子的觀點來看,的確是上位者的制度規畫有待改善。
常使民無知無欲,使夫智者不敢為也。 ——《道德經》第 3 章
這句話表面上的意思是,永遠要使人民保持在沒有狡詐的心智、沒有貪欲的狀態,這樣即使有少數人知道爭名奪利的方法、想滿足私欲,他們也不敢去做。如此一來,天下沒有不長治久安的道理。
老子不是要領導者實行愚民政策,更不是要求人們去除一切欲望。畢竟,貧窮的人想變富有,低賤的人想變得高貴,不受肯定的工作者想獲得讚美等,本來就是人之常情。這裡的重點是,統治者的一切做法及要求,是否能鼓舞人民維持修身養性,減少人們投機取巧的機會,抑制貪欲膨脹。
回到職場上,想達到這樣的效果,需要靠完善的企業制度和文化。舉例來說,為了創造公平、員工更樂於學習互助的團隊合作環境,Google 的考核制度除了員工跟主管面談外,員工還需要接受同部門、跨部門甚至後輩同事的評量,將多方的意見納入、綜合考量後,員工才會得到最終的考核成績。Google 還有感謝同儕獎金的制度,讓同事可以感謝其他部門同事的協助,無形中建立彼此幫助的企業文化。
前 Google 資深人資長、軟體公司 Humu 創辦人拉茲洛.博克(Laszlo Bock)指出,透過這樣的制度設計,可以讓員工知道,不是懂得巴結上司、鑽研如何提高績效達成率就好;而是要懂得在團隊裡貢獻價值,把事情做好、展現積極態度,才能獲得認可。
「建立一套公平的考核機制,積極協助員工精進表現,而非讓員工費心於在主管面前求表現、爭取績效評等,才是企業真正值得花心思的地方。」
如果這件事主管根本不看重,那我也興致缺缺;一項跨部門的活動,別部門的同事詢問是否有人可以支援,但一想到自己的事情做不完,幫忙別人做好也不會反映在自己的績效上,乾脆拒絕或交差了事,做好手上的工作比較重要。
假設公司裡有許多員工都出現這樣的心態,領導者可能就得思考,將關鍵績效指標(KPI)、績效考核制度落實到極致的結果,可能會導致員工在某些被交付的任務上大小眼,甚至影響團隊氣氛。其實,如果從老子的觀點來看,的確是上位者的制度規畫有待改善。
常使民無知無欲,使夫智者不敢為也。 ——《道德經》第 3 章
這句話表面上的意思是,永遠要使人民保持在沒有狡詐的心智、沒有貪欲的狀態,這樣即使有少數人知道爭名奪利的方法、想滿足私欲,他們也不敢去做。如此一來,天下沒有不長治久安的道理。
老子不是要領導者實行愚民政策,更不是要求人們去除一切欲望。畢竟,貧窮的人想變富有,低賤的人想變得高貴,不受肯定的工作者想獲得讚美等,本來就是人之常情。這裡的重點是,統治者的一切做法及要求,是否能鼓舞人民維持修身養性,減少人們投機取巧的機會,抑制貪欲膨脹。
回到職場上,想達到這樣的效果,需要靠完善的企業制度和文化。舉例來說,為了創造公平、員工更樂於學習互助的團隊合作環境,Google 的考核制度除了員工跟主管面談外,員工還需要接受同部門、跨部門甚至後輩同事的評量,將多方的意見納入、綜合考量後,員工才會得到最終的考核成績。Google 還有感謝同儕獎金的制度,讓同事可以感謝其他部門同事的協助,無形中建立彼此幫助的企業文化。
前 Google 資深人資長、軟體公司 Humu 創辦人拉茲洛.博克(Laszlo Bock)指出,透過這樣的制度設計,可以讓員工知道,不是懂得巴結上司、鑽研如何提高績效達成率就好;而是要懂得在團隊裡貢獻價值,把事情做好、展現積極態度,才能獲得認可。
「建立一套公平的考核機制,積極協助員工精進表現,而非讓員工費心於在主管面前求表現、爭取績效評等,才是企業真正值得花心思的地方。」
訂閱:
文章 (Atom)
程式語言編年史
程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...








