1. 女生適合做程序員嗎
基於我們多年的IT培訓經驗,我們可以很直接的說,女生完全可以勝任編程崗位。首先,編程工作都是室內電腦辦公,算不上重體力勞動。如果你非說這個工作既費腦又費身體的話,那請問哪個互聯網崗位不是這樣?運營、文案、設計師都需要伏案工作不是嗎?至於編程涉及到的函數、演算法之類的,這些通過學習都是可以掌握的。
2014年,谷歌開始發布員工多樣性數據,其他科技公司也紛紛效仿,微軟、蘋果、Facebook也和谷歌一起,每年更新該公司的員工多樣性報告。從那些報告來看,這些公司的女性員工所佔比例在三分之一以下,技術崗位更少。
不過,近年來,科技公司開始逐漸招收更多女性員工,尤其是技術崗位,來改善性別失衡的問題。谷歌也設置了"Made With Code"項目,用於培養和教育女生編程;2015年,谷歌與迪士尼聯合製作動畫片《明日世界的米爾斯》, Loretta角色被塑造成為一名聰明的程序員,以期待點燃女孩子們對於計算機技術和科學的探索興趣;2016年,谷歌又將63個職業女性符號加入emoji豪華表情庫,希望藉此「強化女性職業多樣性,讓女孩兒無處不在。」
對於一家公司來說,他們沒有理由去排斥一個女程序員。因為員工都是來公司解決難題、創造價值的,大家都是幹活領工資的,是男是女沒多大區別。
而且,女程序員的耐心和細致程度相對來說更高,如果她們的比例能再提高一些,對整個行業都是個利好。
科技的發展,很大程度的拉平了男女體力上的差距。女生們跟隨自己的意願,投身到傳統意義上男生的行業,其實也是男女平權的一種體現。
2. 如何讓程序員更容易的開發Web界面
如何讓程序員更容易的開發Web界面,是一個持久的話題,所有的從事相關開發的公司都會碰到這個問題,並且被這個問題所深深困擾。
Tiny框架也不得不直視這個問題,確實來說,想解決這個問題,也是非常有難度與深度的,業界也有各種各樣的嘗試,這也是有各種各樣不同框架出現的原因。
Tiny框架構建者認為,完全採用一種框架解決所有問題,是不現實的。而且即使目前找得到一種非常好的框架,暫時可以滿足應用需要,但是隨著技術的發展,業務的進化,就會慢慢變得不再滿足業務需要。因此,Tiny框架構建從不再把做一套UI組件去適各種需求作為自己的目標。
反過來,我們看看在做Web應用中,可能會碰到的問題:
UI中JS的引入與順序,JS合並的問題
UI中css的引入與順序,CSS合並的問題
UI中碰到性能問題時的影響范圍,比如:一個樹出現問題,要改動許多用到樹的地方
代碼重復的問題,同樣的內容在許多地方都有,如果要改動就要改動許多個地方
整體布局調整困難的問題
程序員需要關注的內容太多的問題,JS,CSS,布局,後台業務,前台展現,尼瑪界面工程師必須得是全才才可以搞得定所有問題。
開發效率的問題
執行效率的問題,前台響應要求速度更快
集群的問題
國際化的問題
...
因此,我在以前寫過一篇文章:UI開發的終極解決方案感興趣的同學,可以去看看,今天的目標是利用TinyUI框架的重構SmartAdmin,使得更容易被使用。
SmartAdmin初識
SmartAdmin是一套基於JQuery,Bootstrap構建的UI組件庫,說直白些,它就是個大雜燴,它把各種JQuery插件和Bootstrap整合到一起,提供了一整套基本完整的應用開發UI庫,基本是拿著它就可以用來非常專業的應用系統了。
下面是界面,當然它內嵌提供了四套皮膚,可以進行切換的:
由於SmartAdmin是商業產品,需要購買,因此不能提供其Copy,據說在Bai可以搜到,據說可以下載。如果只是想看一下的話,請點擊此鏈接:http://192.241.236.31/test4.smartadmin/
SmartAdmin分析
通過對SmartAdmin的分析,發現其復用了大量的開源插件,並且利用了Ajax載入技術,在運行期載入了大量的JS插件或CSS,整個頁面採用Html+JS整合而成,許多JS與頁面還是分離的,也就是說對本頁面中的Dom元素的處理的JS不一定在當前html文件中,所以要想看得懂是非常困難的,如果想把它應用在自己的項目當中,也是非常困難的一件事情。
舉個例子來說,要顯示一個小部件,需要寫這么一段內容:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<div class="jarviswidget" id="wid-id-0">
�0�2<!-- widget options:
�0�2usage: <div class="jarviswidget" id="wid-id-0" data-widget-editbutton="false">
�0�2�0�2
�0�2data-widget-colorbutton="false"
�0�2data-widget-editbutton="false"
�0�2data-widget-togglebutton="false"
�0�2data-widget-deletebutton="false"
�0�2data-widget-fullscreenbutton="false"
�0�2data-widget-custombutton="false"
�0�2data-widget-collapsed="true"�0�2
�0�2data-widget-sortable="false"
�0�2�0�2
�0�2-->
�0�2<header>
�0�2<h2><strong>Default</strong> <i>Widget</i></h2>
�0�2�0�2
�0�2</header>
�0�2
�0�2
�0�2<!-- widget div-->
�0�2<div>
�0�2�0�2
�0�2<!-- widget edit box -->
�0�2<div class="jarviswidget-editbox">
�0�2<!-- This area used as dropdown edit box -->
�0�2<input class="form-control" type="text">
�0�2<span class="note"><i class="fa fa-check text-success"></i> Change title to update and save instantly!</span>
�0�2�0�2
�0�2</div>
�0�2<!-- end widget edit box -->
�0�2�0�2
�0�2<!-- widget content -->
�0�2<div class="widget-body">
�0�2�0�2
�0�2<p> Widget comes with a default 10 padding to the body which can be removed by adding the class <code>.no-padding</code>�0�2
�0�2to the <code>.widget-body</code> class. The default widget also comes with 5 widget buttons as displayed on top right�0�2
�0�2corner of the widget header. </p>
�0�2<a href="javascript:void(0);" class="btn btn-default btn-lg"> <strong>Big</strong> <i>Button</i> </a>
�0�2�0�2
�0�2</div>
�0�2<!-- end widget content -->
�0�2�0�2
�0�2</div>
�0�2<!-- end widget div -->
�0�2�0�2
</div>
這個程序員處理起來還是相當有難度的,好吧,這還不算過分的。
執行下面的命令:
dir *.js /s /w
運行結果:
?
1
2
所列文件總數:
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2310 個文件�0�2�0�2�0�2�0�2�0�2 6,043,053 位元組
執行下面的命令:
dir *.css /s /w
運行結果:
?
1
2
所列文件總數:
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�236 個文件�0�2�0�2�0�2�0�2�0�2 1,511,412 位元組
裡面有這么多的JS,有這么多的CSS,它們的引入順序也是非常重要的,稍有差錯,就會有js錯誤的問題。
再來看看,JS載入過程:
可以看到,要訪問大量的js,CSS,對於伺服器的壓力是比較大的,客戶端載入時間也是比較長的,程序員要釐清這些關系,也是非常困難的。
SmartAdmin重構
對SmartAdmin重構,是指按照Tiny框架的體系結構來進行重構。
第一步,釐清關系
通過整理,發現smartadmin中使用的js插件有如下之多:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
bootstrap
bootstrapProgressbar
bootstrapSlider
bootstrapTags
bootstrapTimepicker
bootstraptree
bootstrapWizard
ckeditor
colorhelpers
colorpicker
datatables
delete-table-row
dropzone
easyPieChart
excanvas
fastclick
flot
FontAwesome
fueluxwizard
fullcalendar
ie-placeholder
ion-slider
jquery
jquery-form
jquery-nestable
jquery-touch
jqueryui
jqueryvalidate
js-migrate
jstorage
knob
markdown
maskedInput
maxlength
morris
msieFix
multiselect
notification
noUiSlider
pace
prettify
raphael
select2
selectToUISlider
smartadmin
smartwidgets
sparkline
summernote
superbox
throttle-denounce
typeahead
vectormap
x-editable
第二步:UI插件,組件包化:
比如JQuery組件包化,就是編寫下面的文件:jquery.ui.xml
?
1
2
3
4
5
<ui-components>
�0�2�0�2�0�2�0�2<ui-component name="jquery">
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<js-resource>/jquery/jquery-1.11.0.js</js-resource>
�0�2�0�2�0�2�0�2</ui-component>
</ui-components>
比如JQueryUI組修的包化,就是編寫下面的文件:jqueryui.ui.xml
?
1
2
3
4
5
6
<ui-components>
�0�2�0�2�0�2�0�2<ui-component name="jqueryui" dependencies="jquery">
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<js-resource>/jqueryui/js/jquery-ui-1.10.4.custom.js</js-resource>
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<css-resource>/jqueryui/css/smoothness/jquery-ui-1.10.4.custom.css</css-resource>
�0�2�0�2�0�2�0�2</ui-component>
</ui-components>
比如BootStrap組件包化,就是寫下面的文件:bootstrap.ui.xml
?
1
2
3
4
5
6
<ui-components>
�0�2�0�2�0�2�0�2<ui-component name="bootstrap" dependencies="jqueryui">
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<css-resource>/bootstrap/css/bootstrap.min.css</css-resource>
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<js-resource>/bootstrap/js/bootstrap.js</js-resource>
�0�2�0�2�0�2�0�2</ui-component>
</ui-components>
其它類推,最主要的目的就是要分清,用到哪些JS,哪些CSS,並且整理組件包之間的依賴關系,比如,上面BootStrap就依賴了jqueryui,當然jqueryui依賴了JQuery
通過上面的依賴樹Tiny框架就可以自動構建好CSS及JS資源。
因為這些資源都是放在Jar工程的main/resources目錄中,因此就直接打進jar包了。
第三步,編寫宏
比如,原來的Tab,需要涉及到html,js,編寫後續使用的宏如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#**
�0�2* JqueryUI Tab
�0�2* juiTab[1..1]
�0�2*�0�2�0�2�0�2�0�2�0�2 juiTabHeader[1..1]
�0�2*�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2 juiTabHeaderItem[1..n]
�0�2*�0�2�0�2�0�2�0�2�0�2 juiTabContentItem[1..n]
�0�2*#
�0�2
#macro(juiTab $juiTabId)
<div id="$juiTabId">
$bodyContent
</div>
<script>
�0�2�0�2�0�2�0�2$(document).ready(function(){
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2$('#$juiTabId').tabs();
�0�2�0�2�0�2�0�2});
</script>
#end
�0�2
#macro(juiTabHeader)
<ul>
$bodyContent
</ul>
#end
�0�2
#macro(juiTabHeaderItem $juiTabContentItemId)
<li>
�0�2�0�2�0�2�0�2<a href="#$juiTabContentItemId">$bodyContent</a>
</li>
#end
�0�2
#macro(juiTabContentItem $juiTabContentItemId)
<div id="$juiTabContentItemId">
$bodyContent
</div>
#end
3. java開發程序員與什麼部門打交道
您好,作為java開發程序員一般與產品經理打交道的時候多一些,需要產品經理給出一個軟體的定位,其次經常打交道的還有Ul部門的設計師還有測試工程師,也會和開發部門的同事打交道進行內部溝通,很高興為您解答,希望可以幫到您,祝您生活愉快。
4. 一.小白程序員常用的代碼(歡迎大家補充)
(1)、清除所有元素的內邊距和外邊距 : *{ margin: 0; padding: 0; }
(2)、清除 a 標簽的下劃線: a { text-decoration: none; }
(3)、當有滑鼠懸停在a標簽下劃線重新顯示: a:hover {text-decoration:underline;}
(4)、清除單個 li 標簽前面的黑點: li { list-style: none; } ,想要清除所有 li 標簽前面的黑點就把 li 換成 ul
(5)、想要元素(行內元素除外)在頁面中居中最簡單的辦法: margin: 0 auto;
(6)、想要文字居中: text-align: center; 或者 設置 line-height: 當前元素的行高 ;
(7)、行內元素、塊元素和行內塊元素之間的轉換:
(8)、隱藏元素:
(9)、Position定位:
(10)、解決行內塊間距問題最簡單的方法:給父元素設置font-size:0
(11)、單行文本溢出顯示為省略號:
(12)、清除浮動帶來的影響:
(13)、浮動:
(14)、彈性布局(彈性盒子):
(15)、圓角邊框(border-radius)的基本用法:
(16)、去除 input 輸入框獲取焦點時的加粗邊框:
(17)、阻止瀏覽器默認行為:
(18)、在眾多列表中尋找第幾個(css方法):
(19)、背景圖片的設置:
(20)、輸入框(input)標簽的type屬性:
下拉框:
(21)、按鈕(button)type屬性:
(22)、有序、無序、自定義列表:
(23)、選擇器優先順序:
(24)、 怪異盒子:
(25)、字體設置:
(26)、溢出隱藏:
(27)、精靈圖:
(28)、設置滑鼠樣式:
(29)、設置元素的平移、旋轉、縮放、傾斜(2D):
(30)、合並單元格邊框線:
(31)、label標簽的for屬性的作用:擴大表單元素的選中范圍:
(32)、有符號或者空格就換行:
(33)、自動換行:
(34)、文本溢出添加滾動條:
(35)、判斷基本數據類型:
(36)、switch分支語句(用來判斷某個變數是否等於(===)某個值):
(37)、while 循環語句:
(38)、do while 循環
(39)、改變 this 指向:
(40)、節流和防抖:
(41)、陰影:
內陰影效果:在css效果里加上inset就可以了(在最後添加)
(42)、邊框顏色
5. CSS裡面的div ul li 它們之間是什麼樣的關系
H 這是一個系列的標簽,從H1到H6,一共六個,有人說太少了,有人說正好用,有人說用不了這么多。反正我是覺得差不多。正確寫法是:<h></h>主要是用來存放標題,也有一些朋友用來作它用拿來作其它用處,個人覺得這個標簽還是讓他安生一點,就讓他做標題的作用。這六個標簽之間最好不要出現什麼相互包含的事。
ul,li 這是一個列表,在列表中,除了UL還OL,不過我覺得OL有點像是雞肋。因為UL通過CSS定義一樣可以有OL的數字排序效果。所以一般我不推薦使用OL,有UL就可以了。UL是塊級的,他的子級li也是塊級標簽。正確的寫法是<ul><li></li></ul> LI標簽是被UL標簽包裹的,在UL標簽里可以有無數個LI標簽,LI標簽不能獨立使用。並且LI標簽一定要封口,這不光是美觀問題,對於後期的維護也很有好處。很多程序員都不喜歡把這個LI封口。UL列表的用處主要是列舉出一維的,同一類型的數據。具體的比如使用在菜單上,文章中列數的一些條例等等。