background preloader

Jeffreyhung

Facebook Twitter

Jeffrey

淺談->如何分辨中古車是否為事故車 YARIS 篇,汽車綜合討論串,小老婆汽機車資訊網,Jorsindo Motor Club. 緊接著就要來檢查另一個重點,這也是一般不太會檢查的地方--->車身門框 以下也是做一個簡單的鑑定與介紹,請看圖 這張圖說真的有點失敗,小弟我只能用文字再加強其註解,下面會有幾張比較清楚的照片可供說明,大家就將就一點吧 我們看上圖可以知道,假設,這台車有經過大力的撞擊而導致嚴重的潰縮的話(小車特別容易潰縮至A柱),那圖中A柱的壓模孔一定會有某種程度的變形,不會像圖中這麼完整,再來我們看下一張 註解看不清楚沒關係,我來翻譯一下,將車門內裝的氣密膠條拉下,可以看看鈑件間隙有無不一,藉此可判斷A柱有無損傷,意思就是說,如果拉下氣密膠條發現間隙有問題或是有重烤的痕跡,甚至是生鏽,這都是不對的,不應該生鏽,因為這個部分連同車身都會上亮光漆(就是俗稱的金油),有上亮光漆而且又有膠條保護,理應到報廢都不應該爆開生鏽(除非金油不夠),各位讀者如果自己有愛車的話,可以去拉開來看看我說的地方就可以理解了,年份久一點的,就頂多沙子會很多而已~~ OK,接下來問題來了,註解在下圖裡,看完之後下一段會解釋 當小弟我要"拆"下A柱內飾板時,發現不用工具,也不用出蠻力,輕輕鬆鬆就"取"下了,哪台車會是這樣阿,直覺性的把A柱好好檢查一遍,才發現問題真的大了..............

由此發現了為什麼本車下雨天就會有滲水的問題,也解開了一連串的問題點 修補技術真的不好........ 在看了小白鴨之後,發現前擋沒有品牌商標MARK,連個字都沒有 因為本車的情形有點不單純,所以小弟又商情服務廠的同仁借了一個空位幫我把車給頂起來,可以好好仔細的看一下底盤的情況 在撐起小白鴨的同時呢,大概跟車主報告了一下,車主瞭解了車況之後,實在是不忍看到其失望與失落的表情,畢竟能擁有一台車也是她出社會後的一個小小願望,現在知道了小鴨是這般的"撞"況,心情也不是在這裡用文字所能表達的,不過我還是得繼續鑑定好做個結案,讓車主要修車也有個方向,以上是題外話,我們繼續下去吧!!!! 在頂起來後....... 先看對照組,也就是先知道原本應該要是怎麼樣子,再來看小白鴨 下一張說明猜測的"撞"況 來一個原車左右對照 除了這幾個問題點,車身底盤的其他地方就沒有什麼異狀了,到這裡也可以算鑑定完畢,要做一個總結了 總結 車主有問到說,這樣這台車算不算重大事故車阿!! (完) 職場力大補丸:吃下這 43 堂免費線上課程,讓你走遍世界求職無障礙. 《TO》導讀:今年暑假覺得熱過頭所以決定開始要窩在家昏睡發懶嗎? 但有沒有想過這也是一個充實自己、學習新知識的絕佳時機? 將這渾渾噩噩的腦袋與空白的行事曆用在更實際的地方吧! 想像一下當暑假結束,忙碌時節一到就能在自己短短履歷上新增其他新技能的感覺是什麼? 很棒的畫面吧! 以下我們替你整理七大實用技巧課程,分別是:程式編碼、設計課程、網路行銷、溝通技巧、創業學、寫作技巧、語言學習等,總計 43 堂免費線上教學。 我們絕對不會要求你犧牲難得的夏日夜晚耗在無聊又古板的課堂上,相反地,你只需要每週投資幾個小時參與網路課程(所謂「網路課程」泛指窩在家中沙發配著一杯醉人的紅酒也算)就能獲得許多很棒的技巧。

為了確保整個學習流程簡單明瞭,兩件事強調:第一,我們只會選擇 10 週內能完成的課程(最短甚至一個小時內解決);再來,選出的課程都絕對有趣也有學習的價值性,而且「全部免費!」 心動了嗎? 程式編碼 Programming哈佛大學資訊工程概論 (Harvard University’s Introduction to Computer Science, edX) 這門資訊工程概論在 2014 年秋是哈佛大學校內規模最大的課程。 課程等級:初級 課程時間:180 小時 / 9 堂課 Java 程式設計概論 (Introduction to Programming in Java, MIT OpenCourseWare) 此課程目的在幫助學生發展高品質且可實際解決工作上所遇到問題的能力。 課程等級:中級 課程時間:16 小時 / 7 堂課,7 堂實作 密西根大學:人人都懂的編程課(Python) (University of Michigan’s Programming for Everybody (Python), Coursera) 沒有程式設計經驗嗎? 課程時間:20-40 小時,10 堂課 Dash, General Assembly Dash 主要透過階段性教學與實作方式教會學生如何運用 HTML, CSS 和 JavaScript 的互動式網站。 課程時間:4 套課程 C & C++ 概論 (Introduction to C and C++, MIT OpenCourseWare) 課程時間:16 小時 / 8 堂課、8 堂實作 HTML & CSS, Codecademy 課程時間:7 小時 / 12 套課程 圖像設計概論. 6 Python libraries every programmer will love.

In programming, little frustrations can be as agonizing as the big problems. No one wants to pull their hair out merely to pop up a window with a text message or to write quickly (and safely!) To a database. But programmers would welcome fast solutions to these issues that are also robust in the long run. Here are six Python libraries that provide quick fixes to immediate problems, but can also be used as the underpinnings for bigger projects. Pyglet What it is: Pyglet is cross-platform framework for multimedia and windows graphics in pure Python. Why you need it: It provides handy access to items that are tedious to implement from scratch for a GUI application: window functions, OpenGL graphics, audio and video playback, keyboard and mouse handling, and working with image files.

All of this is done through the native platform capabilities in Windows, OS X, or Linux, so there are no binary dependencies; it's pure Python. Peewee Bottle Invoke Splinter Arrow.

IoT Maker

數位火星計劃 – Google. What's happening in frontend now? Intermediate Python — Python Tips 0.1 documentation. Writing highly readable code — Startups, Wanderlust, and Life Hacking. Writing highly readable code We are always told that commenting our code is important. Without comments other developers will not be able to understand what we did and our future selves will recoil in horror when doing maintenance. Readable code, however, is not only about comment text. More importantly it is about the style, structure and naming. If you get into the habit of writing easily readable code, you will actually find yourself writing less comments. Let us take the following snippet and optimise it for readability. This terse and confusing code calculates the age, in years, of each user record within an array. So what can we do to make this code easy to understand?

Style The first step is to correct the code style. If you are starting a new project or are able to refactor your code to a predefined style it is recommended you use an agreed upon standard. This is what the code looks like after being indented and made to fit a maximum line length of 80 characters. Structure Naming. 学习较底层编程:动手写一个C语言编译器. 动手编写一个编译器,学习一下较为底层的编程方式,是一种学习计算机到底是如何工作的非常有效方法。 编译器通常被看作是十分复杂的工程。 事实上,编写一个产品级的编译器也确实是一个庞大的任务。 但是写一个小巧可用的编译器却不是这么困难。 秘诀就是首先去找到一个最小的可用工程,然后把你想要的特性添加进去。 这个方法也是Abdulaziz Ghuloum在他那篇著名的论文“一种构造编译器的捷径”里所提到的办法。 受到这篇文章的鼓舞,我就写了一个C编译器。 对于我写的编译器来说,我把它叫 babyc,我选了这段代码来作为我需要运行的第一个程序: 没有变量,没有函数调用,没有额外的依赖,甚至连if语句,循环语句都没有,一切看起来是那么简单。

我们首先需要解析这段代码。 这里是语法分析器: 最终,我们需要生成一些汇编代码。 下面就是我们需要生成的汇编代码: 然后加上上面的词法语法分析代码,把这段汇编代码写进一个文件里。 Babyc 就是这样诞生的,你可以在这里看到它最开始的样子。 当然,如果汇编代码没办法运行也是枉然。 非常棒! 我们踏出了第一步,接下去怎么做就全看你了。 这是构建 babyc 的方法。 不要害怕底层的一些事情。 嵌入式系统设计师考试复习笔记之存储管理篇. 嵌入式系统设计师考试复习笔记之存储管理篇 欧浩源(ohy3686@qq.com) 20080721 引言 2007年下半年通过了嵌入式系统设计师的考试,一大堆的复习资料都不知道扔那里好,卖掉又有点可惜,送人又没人要。 与其让当时的复习笔记沉沦书架底部,还不如整理一下让大家评论评论。 1、存储器系统的层次架构 计算机系统的存储器被组织城一个金字塔的层次结构。 自上而下为:CPU内部寄存器、芯片内部高速缓存(cache)、芯片外部高速缓存(SRAM、SDRAM、DRAM)、主存储器(FLASH、EEPROM)、外部存储器(磁盘、光盘、CF卡、SD卡)和远程二级存储器(分布式文件系统、WEB服务器),6个层次的结构。

上述设备从上而下,依次速度更慢、容量更大、访问频率更小,造价更便宜。 2、高速缓存(cache) 工作原理(参照教程126页,博客画不了图):主要利用了程序的局部性特点。 地址映象是指把主存地址空间映象到cache的地址空间。 地址变换是指当程序或数据已经装入到cache后,在实际运行过程中,把主存地址如何编程cache空间的地址。 常用的地址映象和地址变换的方式有:(教程127页) 直接映象和变换:速度快,造价低,但有局限性,不能充分利用cache的好处。 组相联地址映象和变换:速度稍慢但是命中率高。 全相联地址映象和变换:可以任意映射。 常用的cache替换算法:轮转法和随机替换算法。 高速缓存的分类: 统一cache和独立的数据/指令cache 写通cache和写回cache 读操作分配cache和写操作分配cache 3、存储管理单元(MMU) MMU在CPU和物理内存之间进行地址转换,将地址从逻辑空间映射到物理空间,这个过程称为内存映射。 MMU主要完成下面的工作: A. B. C. 嵌入式系统中常常采用页式存储管理。 页表是位于内存中的表,它的每一行对应虚拟存储空间的一个页,该行包含了该虚拟内存页对应的物理内存页的地址、该页的访问权限和该页的缓冲特性等。 从虚拟地址到物理地址的变换过程就是查询页表的过程。 由于页表存储在内存中的,整个查询过程需要付出很大的代价。 当CPU访问内存时,首先在TLB中查找需要的地址变换条目,如果该条目不存在,CPU再从内存中的页表中查询,并把相应的结果添加到TLB中,更新它的内容。

嵌入式系统中虚拟存储空间到物理空间的映射以内存块为单位进行。 4、内存保护 A. B. A. 编写Linux内核模块——第一部分:前言. 【编者的话】Linux内核模块作为Linux内核的扩展手段,可以在运行时动态加载和卸载。 它是设备和用户应用程序之间的桥梁,可以通过标准系统调用,为应用程序屏蔽设备细节。 本文来自Derek Molloy的博客,介绍了内核模块的概念、用途,以及如何构建一个简单的“Hello World”内核模块。 前言 在这系列文章中,将介绍如何为嵌入式Linux设备编写Linux内核模块。 文章将从简单的可加载内核模块(loadable kernel module,LKM)“Hello World!” 开始,进而开发通过使用中断请求控制嵌入式Linux设备(如BeagleBone)通用输入输出接口(GPIO)的模块。 当我确定合适的应用程序时,我会添加更多的后续文章。 内核模块是一个复杂的话题,需要一定的时间来完成。 图1:内核空间GPIO性能 本文集中讨论构建和部署“Hello World!” 什么是内核模块 可加载内核模块(LKM)是Linux内核运行时加载和移除代码的机制。 没有模块化能力,Linux内核将会变得非常大,因为它不得不支持BeagleBone开发板上所需的每个驱动。

图2:Linux用户空间和内核空间 如图2所示,内核模块运行在内核空间,而应用程序运行在用户空间。 为什么编写内核模块 在嵌入式Linux中和电子电路交互,你接触到的是系统文件系统,并且使用低级别的文件操作来和电子电路交互。 另一个实现是使用内核代码,它支持中断。 本次讨论的源码 本次讨论的所有代码都在为《Exploring BeagleBone》准备的GitHub仓库上。 Molloyd@beaglebone:~$ sudo apt-get install git molloyd@beaglebone:~$ git clone 代码中/extras/kernel/hello目录是本文最重要的资源。 准备构建可加载内核模块的系统 为了构建内核代码,需要在设备上安装Linux内核头文件。 本系列的前两篇文章的示例,可以在任何桌面Linux发行版中完成构建。

BeagleBone平台的Linux内核头文件可以从Robert Nelson的网站下载。 然后可以检查头文件是否正确安装: 警告 编写和测试内核模块时很容易使系统崩溃。 模块代码 下一步是将代码构建成内核模块。 约瑟夫问题_学生围成圈,数到3退出的问题 - 大步's Blog大步's Blog. C语言 约瑟夫问题 学生围成圈 数 3退出 问题 约瑟夫问题 c语言实现 描述 n个人想玩残酷的死亡游戏,游戏规则如下: n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。 也有的说成是有N个学生围成一圈,从第一个人开始报数(1到3报数),凡报到3的人退出圈子,问最后剩下人的是原来第几号?

关键是对于踢出的学生的处理,因为如果是直接删除的话,链表处理可能更好,也更易于理解。 上面的方法中有人容易犯一种错误,就是将 while(*p==0) p++; printf("%d",*p); 这句写成 这导致如果人数是3,4,结果都正确,5以上都输出0 这样错误的结果。 下面附上链接的写法: 转载请注明:大步's Blog » 约瑟夫问题_学生围成圈,数到3退出的问题. 模擬面試心得筆記 模擬面試心得筆記 4/9(三) 第一次面試 面試一家公司前,必須先瞭解這家公司在做的事情,以及職缺需求。 這次模擬面試,我沒有準備這些東西,老師有問: 接著是自我介紹的部份,要對自己的作品有自信,完整的描述整個系統,這部份我還要加強,這次只是流水帳的講過我的履歷表而已 - Assembly language programming skills - Solid understanding of machine architectures and micro-architectural performance considerations - Strong background in programming languages is needed - Demonstrated C/C++ programming skills with production system software - Compiler internals knowledge - Experience with compiler optimization passes - Compiler backends for various assembly languages - LLVM experience is a plus. - Experience with PTX is a plus. - Master of Science or equivalent 不過因為我缺少太多的背景知識,這次老師只問了一些計組與OS的問題: C Code -> 組語 -> 優化指令集 -> 改善效能 快取的設計、coherence、snooping cache 有很多問題都是在問有關效能提昇的部份,這邊應該是提昇技能要著重的點 後來因為看到我有上過ACM還有網路的課,所以加問了一些演算法以及網路的問題 其實這次面試很多東西都是以前有看過、學過,但卻沒有真正記起來他可以用在哪裡、該怎麼用 這次面試結束,要將以前學過的東西再撿起來,並且將他們全部串聯起來,除了要瞭解他們的原理,更重要的是要知道這些技術能應用在哪裡,改善哪些地方。

"真正厲害的工程師只需要解決關鍵的問題" temporal locality(time) - 最近用過的東西再次使用的機率較大 memory hierarchy - 多層次的記憶體結構,離處理器越遠的記憶體,空間會越大,存取速度越慢 ˇ. Fully Associative Cache. Introduction A cache consists of a number of slots. Let's call it N. N is almost always some power of 2. Each slot contains M bytes which is the cache line, and this is usually a power of 2, as well. We'll assume, for our example, that our cache consists of 27 = 128 slots. Each slot will contain 25 = 32 bytes in the cache line. Parking Lot Analogy Assume you have a parking lot where they have handed out many parking permits. Suppose there's 1000 parking spots, but 5000 students. The advantage of such a scheme is that it makes full use of the parking lot. Fully Associative Scheme Suppose we are trying to access a byte at address A31-0.

We generate 32 addresses by keeping the upper 27 bits, and making all 32 5-bit bitstrings for B4-0. Which slot should the cache line go to, assuming the data is not already in the cache? If there is any slot where the valid bit is 0 V = 0, pick that slot. Finding the Slot How would you determine whether the cache line you are looking for is in the cache? Summary. Set Associative Cache. Introduction A set-associative scheme is a hybrid between a fully associative cache, and direct mapped cache. It's considered a reasonable compromise between the complex hardware needed for fully associative caches (which requires parallel searches of all slots), and the simplistic direct-mapped scheme, which may cause collisions of addresses to the same slot (similar to collisions in a hash table). Let's assume, as we did for fully associate caches that we have: 128 slots 32 bytes per slot Furthermore, let's assume that we can group slots together into sets.

In particular, we will assume that we have 8 slots per set. Parking Lot Analogy Suppose we have 1000 parking spots. However, instead of one parking spot per number, we have 10 for each number. Your parking spot is based on the first 2 digits of your student ID number. In this case, you use the first 2 digits of your student ID, and have up to 10 different parking spots you can park at. Set Associative Scheme How many sets do we have? 首頁 / 程式人雜誌 / 2015年11月號 -- undefined. Rubi JIT 編譯器 的專案網址如下: 其專案首頁中包含了 C 語言原始碼 (含 *.c 與 *.h 檔) ,而 prog 資料夾內包含了十幾個 *.rb 的範例程式檔。 在本文中,我們將講解整體的程式碼架構。 主程式 main() 位於 engine.c 當中,在 main() 的最後一行呼叫了 execute() 函數,這才是真正重要的主角,其原始碼如下: static int execute(char *source){ init(); lex(source); parser(); ((int (*)(int *, void **)) ntvCode)(0, funcTable); dispose(); return 0; } int main(int argc, char **argv) { char *src; ... fread(src, sizeof(char), ssz, fp); ... return execute(src); } 函數 execute 的參數 source 是被執行的原始碼。

舉例而言,如果您使用 . 一個極簡編譯器通常可分為三步驟,首先是『詞彙解析』 lex(source) , 接著是『語法剖析』 parser(), 最後是『程式碼產生』 codegen()。 但是在 rubi JIT 編譯器中,由於是立即執行,因此在 parser() 裡面一邊 parse 一邊就開始進行『程式碼產生』 的動作,而且 rubi 直接產生的機器碼形式的目的碼,這些機器碼會直接被放入 ntvCode 這個變數中,最後直接把 ntvCode 轉型為函數指標,利用以下的呼叫開始執行該『機器碼』段落。 ((int (*)(int *, void **)) ntvCode)(0, funcTable); 這樣,就完成了整個 Rubi JIT compiler 的核心流程。 在 asm.h 檔案中宣告了 ntvCode 所需要的相關變數與函數,以下是其關鍵性的程式碼。 現在只剩下一個關鍵性問題, parser 到底是如何產生出機器碼的呢? 關於這個問題,我們將在下一篇文章中再來討論並說明。 本文部份內容與大部份圖片修改自 維基百科 , 使用時請遵守 姓名標示、相同方式分享 授權。

Comparing Five Monitoring Options for Docker. As Docker is used for larger deployments it becomes more important to get visibility into the status and health of docker environments. In this article I aim to go over some of the common tools used to monitor containers. I will be evaluating these tools based on the following criteria: 1) ease of deployment, 2) level of detail of information presented, 3) level of aggregation of information from entire deployment, 4) ability to raise alerts from the data and 5) Ability to monitor non-docker resources 6) cost.

This list is by no means comprehensive however I have tried to highlight the most common tools and tools that optimize our six evaluation criteria. Docker Stats All commands in this article have been specifically tested on a RancherOS instance running on Amazon Web Services EC2. The first tool I will talk about is Docker itself, yes you may not be aware that docker client already provides a rudimentary command line tool to inspect containers’ resource consumption.

Score Card: Scout. Tell me about yourself. - HR Interview Questions and Answers. Good morning Mam/Sir, First it would be my pleasure to introduce my self to you. 1. My self is Arun kashya. 2. I am from Dadri (G.B. Zagar) UP. 3. 4. 5. 6. 7. 8. 9. 10. Thank you for making me to speak about my self. Please give your suggestions and feedback: Your Name *: Hardware Virtualization Vs OS Virtualization Vs Application Virtualization « IT 2.0. In this article I’d like to touch briefly on the different level of virtualization technologies that I see being discussed lately. I am not going to talk about specific products but I’d rather keep this at an higher level referencing product implementations just as examples. Lately I have been working on a “Virtual Appliance” presentation that I did for an IBM internal symposium and while I was trying to picture the advantages of a “Virtual Appliance” a doubt raised in my mind: isn’t this the same concept we are using to describe the benefits of “Application Virtualization”?

And the (short) answer is “yes it is indeed”. But let’s dig into the (long) answer. Let’s start describing the different level of virtualization available today in the market. They are: The concept of Hardware Virtualization is straightforward: you cheat your OS so that you pretend to have more hardware resources that you have in reality. The concept of Application Virtualization is easy. Have you noticed anything? Chapter 12: Interrupts.

Understanding Application Containers and OS-Level Virtualization. 孤島日誌: Unix 重新導向跟 2>&1. /dev/null.

Docker

Programming. Operating System. Computer architecture. 群暉及聯發科研替面試分享. 軟韌體工程師面試- C語言與OS作業系統 常見題目(筆試考題) | 易春木.