① eclipse运行自动化测试代码时报错
你解决了没?我也遇见这样的问题了
② 零基础学python,是自学好还是报培训班好
学电脑不如学【视频剪辑】,理由很简单,容易学(不像其它行业学习成本高,难度大),适合短期3-4个月短期学习,而且行业缺口非常大,无论是找工作还是自己在家里接私单,月收入轻松过万,两三万也是稀松平常。【点击进入】免费“短视频剪辑后期”学习网址:
www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=313&zdhhr-11y17r-141187050229786925
因为现在【短视频】的崛起,任何企业,任何工作室或者个人都需要制作剪辑大量的短视频来包装品牌,发抖音,发朋友圈,发淘宝等自媒体渠道做展示。因为每天都要更新并发布新内容,所以剪辑师根本招不够,,供需失衡就造成了剪辑师高薪水。
而且剪辑这个技术并不需要高超的电脑技术,也不需要美术音乐造诣,基本都是固定套路,要什么风格的片要什么节奏,经过三四个月的培训都可以轻松掌握。但凡有点电脑基础会用鼠标拖拽,会点击图标,会保存除非自己不想学,没有学不会的。但是要学好学精,就一定要找专业负责的培训机构了,推荐这个领域的老大:王氏教育。
在“短视频剪辑/短视频运营/视频特效”处理这块,【王氏教育】是国内的老大,每个城市都是总部直营校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合0基础的学生。王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】: www.huixueba.com.cn/school/yingshi?type=2&zdhhr-11y17r-141187050229786925
大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
③ java点名系统源代码
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class test {
static String[] arr;
static boolean flag=true;
static List<String> a;
static JTextField jtf;
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame=new JFrame();
frame.setLayout(new GridLayout(1,2));
JButton button = new JButton("抽奖");
jtf = new JTextField();
frame.add(jtf);
frame.add(button);
a = new ArrayList<String>();
arr = new String[]{"张三","李四","王五"};
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int i=0;
fond:
while(true){
String str = arr[(int)(Math.random()*arr.length)];
for(String b:a){
if(b.equals(str)){
if(i>=arr.length){
jtf.setText("没有人了");
break fond;
}
continue fond;
}
i++;
}
a.add(str);
jtf.setText(str);
break;
}
}
});
frame.setSize(500, 500);
frame.setLocation(500, 500);
frame.setVisible(true);
}
}
④ ubuntu todo list 哪个好
最严格地讲,linux从来都不是操作系统,linux只是一个操作系统内核。因为linux是开放源代码的自由软件,所以不同的人,不同的社区或者公司都可以按照自己想法,用linux内核来“组装”出一个操作系统。以linux为内核的操作系统很多,所以通常就用linux发行版,或者直接用linux来统称以linux为内核的操作系统。ubuntu就是一个linux发行版,也就是说ubuntu是以linux为内核的操作系统。所以其实ubuntu和linux根本不是同一个概念,根本没法比。 linux要么作为以linux为内核的操作系统的统称,要么用来表示linux内核,从来不代表某个具体的操作系统。
⑤ 如何解决 Backbone 的相同 Model 事件绑定问题
我在你的应用场景下做了点测试,在没有修改BackBone任何源代码的情况下实现了你的需求,下面是具体的解决方案:
按照你的需要定义Model,Collection,ItemView,AppView,其中ItemView具体是你需要更新的原子视图,而AppView是应用程序视图;
ItemViewA和ItemViewB应该分布在两个不同的AppView实例中,要做到这点也很容易,因为从业务逻辑上来讲,相同的数据分布在不同的地方可以看成是不同的应用域,上面几个的关系是:
Collection拥有多个Model,Model定义了数据的操作,每个ItemView对应1个Model,而1个AppView对应1个Collection,因为在javascript中的对象是按引用传递的,两个AppView的实例所引用的Collection实际指向相同的对象,这样当AppViewA中的某个ItemViewA触发某种事件,肯定会自动的触发最底层的同1个Model的事件。
这样说来可能有点抽象,我根据官方示例的Todos应用改了改,下面是相关的代码,重点需要注意的部分用黑体字标出,你很快就明白了。
主要的客户端JS代码:
// Todo Model
// Our basic **Todo** model has ` id`, `content`, `done` attributes.
var Todo = Backbone.Model.extend({
// If you don't provide a todo, one will be provided for you.
EMPTY: "empty todo...",
// Ensure that each todo created has `content`.
initialize: function () {
if (!this.get("content")) {
this.set({"content": this.EMPTY});
}
},
// Toggle the `done` state of this todo item.
toggle: function () {
this.save({done: Math.abs(1 - parseInt(this.get("done"))) });
this.change();
},
// Remove this Todo from *database* and delete its view.
clear: function () {
this.destroy();
this.view.remove();
}
});
// Todo Collection
// The collection of todos is backed by *database* instead of a remote
// server.
var TodoList = Backbone.Collection.extend({
// Reference to this collection's model.
model: Todo,
// Save all of the todo items under the `"todos"` namespace.
//localStorage: new Store("todos"),
url: '/todos',
// Filter down the list of all todo items that are finished.
done: function () {
return this.filter(function (todo) {
return parseInt(todo.get('done'));
});
},
// Filter down the list to only todo items that are still not finished.
remaining: function () {
return this.without.apply(this, this.done());
},
// Todos are sorted by their original insertion order.
comparator: function (todo) {
return parseInt(todo.get('id'));
}
});
// Create our global collection of **Todos**.
var Todos = new TodoList();
// Todo Item View
// The DOM element for a todo item...
var TodoView = Backbone.View.extend({
//... is a list tag.
tagName: "li",
// Cache the template function for a single item.
template: _.template($('#item-template').html()),
// The DOM events specific to an item.
events: {
"click .check" : "toggleDone",
"dblclick div.content" : "edit",
"click span.destroy" : "clear",
"keypress .input" : "updateOnEnter"
},
// The TodoView listens for changes to its model, re-rendering.
// Since there's a one-to-one correspondence between a **Todo**
// and a **TodoView** in this app, we set a direct reference
// on the model for convenience.
initialize: function () {
_.bindAll(this, 'render', 'close');
this.model.bind('change', this.render);
this.model.view = this;
},
// Re-render the contents of the todo item.
render: function () {
$(this.el).html(this.template(this.model.toJSON()));
this.setContent();
return this;
},
// To avoid XSS (not that it would be harmful in this particular app),
// we use `jQuery.text` to set the contents of the todo item.
setContent: function () {
this.$('.content').text(this.model.get('content'))
.autotag(this.model.get('tags'), {url: '#/tag/'})
.autolink({text: '(点此)'});
this.$('.created').attr({'title': this.model.get('created')}).prettyDate();
this.input = this.$('.input');
this.input.bind('blur', this.close);
this.input.val(this.model.get('content'));
},
// Toggle the `"done"` state of the model.
toggleDone: function () {
this.model.toggle();
},
// Switch this view into `"editing"` mode, displaying the input field.
edit: function () {
$(this.el).addClass("editing");
this.input.focus();
},
// Close the `"editing"` mode, saving changes to the todo.
close: function () {
this.model.save({content: this.input.val()});
$(this.el).removeClass("editing");
},
// If you hit `enter`, we're through editing the item.
updateOnEnter: function (e) {
if (e.keyCode === 13) {
this.close();
}
},
// Remove this view from the DOM.
remove: function () {
$(this.el).fadeOut('fast', function () {
$(this).remove();
});
},
// Remove the item, destroy the model.
clear: function () {
this.model.clear();
}
});
// The Application
// Our overall **AppView** is the top-level piece of UI.
var AppView = Backbone.View.extend({
// Instead of generating a new element, bind to the existing skeleton of
// the App already present in the HTML.
el: $("#todoapp"),
// Our template for the line of statistics at the bottom of the app.
statsTemplate: _.template($('#stats-template').html()),
// Delegated events for creating new items, and clearing completed ones.
events: {
"keypress .new-todo": "createOnEnter",
"keyup .new-todo": "showTooltip",
"click .clear a": "clearCompleted"
},
// At initialization we bind to the relevant events on the `Todos`
// collection, when items are added or changed. Kick things off by
// loading any preexisting todos that might be saved in *database*.
initialize: function (options) {
_.bindAll(this, 'addOne', 'addAll', 'render');
this.input = this.$(".new-todo");
// 这里需要重新定义AppView的el属性,因为是两个不同的应用
this.el = $(options.element);
Todos.bind('add', this.addOne);
Todos.bind('refresh', this.addAll);
Todos.bind('all', this.render);
Todos.fetch();
},
// Re-rendering the App just means refreshing the statistics -- the rest
// of the app doesn't change.
render: function () {
var done = Todos.done().length;
this.$('div.stats').html(this.statsTemplate({
total: Todos.length,
done: Todos.done().length,
remaining: Todos.remaining().length
}));
},
// Add a single todo item to the list by creating a view for it, and
// appending its element to the `<ul>`.
addOne: function (todo) {
var view = new TodoView({model: todo});
this.$("ul.todos").prepend(view.render().el);
this.$("ul.todos li:first").fadeIn('fast');
},
// Add all items in the **Todos** collection at once.
addAll: function () {
this.$("ul.todos").html('');
Todos.each(this.addOne);
},
// Generate the attributes for a new Todo item.
newAttributes: function () {
return { content: this.input.val() };
},
// If you hit return in the main input field, create new **Todo** model,
// persisting it to *database*.
createOnEnter: function (e) {
if (e.keyCode !== 13) {
return;
}
Todos.create(this.newAttributes());
this.input.val('');
},
// Clear all done todo items, destroying their models.
clearCompleted: function () {
_.each(Todos.done(), function (todo) { todo.clear(); });
return false;
},
// Lazily show the tooltip that tells you to press `enter` to save
// a new todo item, after one second.
showTooltip: function (e) {
var tooltip = this.$(".ui-tooltip-top");
var val = this.input.val();
tooltip.fadeOut();
if (this.tooltipTimeout) {
clearTimeout(this.tooltipTimeout);
}
if (val === '' || val === this.input.attr('placeholder')) {
return false;
}
var show = function () { tooltip.show().fadeIn(); };
this.tooltipTimeout = _.delay(show, 1000);
}
});
// 在两个不同的地方创建两个AppView实例,其中1个App更新之后,另外1个也会随着更新
var App = new AppView({element: '#todoapp'});
var App2 = new AppView({element: '#todoapp2'});
应用的后端我采用的CakePHP做的,如果需要的话,我可以将整个应用的代码和数据库结构打包发给你
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
⑥ 千峰的前端靠谱吗!!!
第一阶段:PC端页面制作与动画特效
学完第一阶段就可以配合UI设计师进行项目开发完成pc端网页的布局制作与样式设计实现。
一、html+css搭建页面
1. HTML语义化标签
2. Html标签规范
3. Css样式基础
4. Css高级及布局方案
二、PhotoShop切图流程
1. Photoshop基本使用
2. 了解各种图片格式及优缺点
3. 图片切图流程
4. PSD格式源文件切图流程
5. 设计图转页面布局实际操作
三、Css3动画特效
1. Transition过渡
2. Transform变形
3. Animation动画
4. 3D特效制作
第二阶段:移动端页面制作与响应式实现
这一阶段主要是移动端网页的布局制作与样式设计实现。可以适配各种手机尺寸,并能利用响应式惊醒移动端与PC端适配。
一、移动端概念与布局
1. 移动端概念,如:PPI、像素比
2. Viewport视口
3. 移动端适配方案
4. 移动端尺寸单位,如:rem、vw
5. 移动端布局实际操作
二、响应式设计与实现
1. 媒体查询@media
2. Flex弹性盒模型
3. 移动端常见设备尺寸
4. 移动端交互实现
第三阶段JavaScript与jQuery开发
这一阶段是重中之重,这一阶段主要是页面行为交互,实现网站中常见特效,如:轮播图、选项卡、拖拽。并能配合UI和后端进行项目开发;
一、JavaScript开发
1. DOM、BOM、事件
2. 面向对象、算法、动画
3. Ajax、前后端通信原理
4. 闭包、设计模式、错误处理
5. 常见特效制作及整站交互实现
二、jQuery开发
1. jQuery核心思想及特性
2. jQuery常见方法及使用
3. jquery插件制作与jqueryUI组件使用 4.
4、编写常见特效及jQuery源码分析
三、项目:纯原生前端技术打造仿小米电商网站视频
第四阶段:H5高级框架技术开发;
这一阶段是现在公司开发中常用的框架,这一阶段学完就可以利用框架开发项目,实现单页面应用开发。可以完成复杂的数据交互应用场景。具备独立开大项目的能力。
一、Vue框架开发及项目 1、Vue基础教程 a) Vue组件与Vue生命周期 b) 单文件组件与脚手架搭建 c) Vue路由 d) Vuex状态管理 e) Nuxt服务端渲染 f) 基于Vue的UI组件库
二、Vue项目:
三、Vue常见问题讲解:
二、React框架开发
1、 React基础教程 a) JSX语法与Hooks新特性 b) React路由 c) Rex状态管理 d) Next服务端渲染 e) 基于React的UI组件库
第五阶段:全栈前后端技术开发
学好了这个阶段的技术恭喜你就能进行前后端全栈式开发了,能独立完成一个中小型项目的前后台。
一、Nodejs技术
1. Node内置API
2. Node文件操作与服务器搭建
3. Express框架与KOA框架
4. Mongodb数据库
5. Npm的功能使用
二、其他后端技术
1. 初始Java或PHP语言
2. 表达式与数据类型
3. 语句结构与数组
4. 类与对象
5. this、static属性、方法
6. 抽象类、接口与多态
三、NodeJS+Express+MongoDB实战项目
第六阶段:混合应用技术开发
一、React Native技术
1. RN开发环境准备与基础组件介绍
2. 多组件集成应用实现TodoList
3. 引入路由,通用模块及列表页面布局
4. RN内置API详解
5. RN内置组件与项目上线流程
二、微信小程序开发
1. 小程序组件
2. 小程序API
3. 小程序云函数
4. Wepy小程序开发框架
5. MpVUe小程序开发框架
三、小程序项目
四、Mpvue小程序框架
第七阶段:H5大前端技术开发
一、数据可视化技术
1. 数据可视化基础
2. Echars、Hignchars
3. D3.js入门
4. D3,js进阶
5. D3.js选择集与数据
6. D3.js高级应用
7. D3,js应用工具:NVD3、N3-chars
二、Flutter技术
1. 界面结构与基础部件
2. 布局与表单
3. Dart语法
4. Widgets容器
5. 网络请求与路由
三、Electron技术
1. Electron入门
2. Electron调试技巧
3. Electron核心API
4. Electron与React、vue集成开发
5. 构建Windows、mac应用
第八阶段:H5架构技术 ,开发工具集服务器技术
1. 掌握Webpack等工具搭建项目
2. Git工具及github管理
3. 阿里云ECS:Linux服务器
4. Nginx:Web服务器
5. Docker:容器化应用
6. Serverless:无服务器技术
二、安全及性能优化
1. 前端攻击demo详解
2. 前端监控异常
3. 测试前端代码线上的实际性能
4. SEO:搜索引擎优化
5. Chrome中的高级调试功能
以上就是给你分享的千锋前端的学习路线,贴合企业,就业有保障
⑦ Python语言哪些地方有开班培训呀
python语言的培训班,有很多啊,特别是在一线城市,一个城市里面就有几十家
⑧ swift语言有前途吗
首先看swift的基础语法,了解了最基本的控制,变量,数据体,类与结构体,继承之后,开始可以写一些简单的命令行工具,说白了就是终端工具,打印log之类的没一点问题。
可惜,我们学习这个东西不是为了开发command line程序的,我用shell或者nodejs也挺好比这个上手还快。
所以紧接着第二天开始直接跳过command line程序编写ios app,也就是iphone程序。
然后我就觉得我他妈的掉进了一个深坑。
搜了一下 现成得swift教程做app的中文几乎没有,国外有几篇讲的是开发一个todolist的教程,写的和官方的那个oc的todolist教程差不多,但是从我开始做到最后结束跑到模拟器里,我他妈也没写上超过20行得swift。。。基本都是IB实现的界面,事件,换场以及控件的创建。
我琢磨那他妈的我用oc也是一样的,算了,ios开发莫非就只是拖拖控件?了解一下mvc的概念就ok?
于是我去github上开始搜索开源的swift项目,比如2048,还有那个flappy,还有一个天气app的软件。
看了几行源码我就特么的放弃了。倒不是看不懂,我发现都是基于cocoa的,什么cocoa呢?我又去搜了一下,说了我是ios开发小白一点经验没有,然后我发现又是他妈的一个深坑啊。。cocoa的api都是oc编写的啊,swift是可以直接调用没的问题,可是cocoa的功能实在太多了啊。。
最他妈主要的是cocoa的帮助手册例子代码,api都他妈的是oc的api啊……我完全不会oc,我说了我是零基础,然后我在思考,我是否需要去学习下oc回来才能看懂那些api到底是怎么调用?那么多开源包都是些什么东西?
卧槽,那我学会了oc,我还学swift干啥呢?
不是说不用学oc了么……我特么的学swift就是为了不想了解oc啊。结果呢。
你不会oc也就是写写command line程序啊……我去你大爷的啊- -。
还有,xcode功能如此强大,我感觉如果自己写着玩,根本啥也不用学好么,鼠标拽拽一个app就出来了啊。。
而专家级呢?我觉得大部分得oc库,类都还都是oc的,你用swift可以调用,但是如果有bug呢?你想看内部实现呢?商业项目中这种开源坑遇到太多了,难道你就只用swift搞定么?
不太可能,也根本不可能,大家的代码都是oc的,底层是oc的,表现层也是,那么你swift到底是干什么用的呢?
===================================================
这是我学习了不到一周对swift和ios开发的理解,不学oc,我开发的时候就经常会陷入
【这他妈是啥,这他妈又是啥的一个一个深坑】
好了,就说这么多,最后扣下我第一句话。
swift开发和前端开发的关系就是java和javascript关系,雷锋和雷峰塔的关系。
PS,我发现其实文档中的实例代码是有swift的例子的,不知道是不是自动更新的,记得上周还木有。刚才发现有了,也可能之前我没仔细看~木哈哈。比如下面这段:
给苹果的文档 赞一个。。但是我依然不他妈的知道那个UIControlState是特么啥,我觉得,会oc开发的同学上手一定比0基础的要快很多……!给苹果的文档 赞一个。。但是我依然不他妈的知道那个UIControlState是特么啥,我觉得,会oc开发的同学上手一定比0基础的要快很多……!
【知乎用户的回答(4票)】:
直接开始学swift没问题,应该可以覆盖objc的所有主要功能,并非辅助语言。Apple开发这个语言的目的就是帮助初学者快速上手。
但是,看他的特点比较像scala,类似这种语言都容易上手,难于规范。因为太多灵活,不够死板,不会大规模用于企业的大项目。学swift,估计自己开始做了几个小应用之后还是需要迫于行业规范再去学习objc
一句话,独立开发可以从swift开始,找工作求职还是先学obj-c吧
⑨ 有多少人按@萧井陌大神给出的Python+Flask路线找到工作了
已经按照 python + web 的路线找到工作。
工资不高,省吃俭用勉强收支平衡,但总算是转职成功了。
背景
年龄:1987.10
学历:末流大专
基础:会用电脑
人脉:0,无相关专业朋友及网友
简历:套了个流行的模板,内容流水账,无任何包装和技巧
时间线
2015.9.3 开始自学
2016.2.18 投简历,共投出10份,3个面试,4个不合适
2016.2.24~25 面试
2016.2.25 拿到两个offer,选择了其中一个
自学过程
2015年9月: 完成coursera的python交互程序设计入门。
本来根本没有转职的打算的,当时无意间点进了S1外野的一个讨论编程的帖子,然后看到有人说coursera上这套python教程让他感到打开了新世界的大门,然后我就去搜了下coursera python(那天正在下载i社的新作,等待的时候,人总是容易失去理智),然后我就参加了这门课,当时只是觉得coursera是个挺高大上的东西,试一下总是一种体验,完成了week 1的课程后,发现week 2的课程得等一个礼拜后的互评结束后才能观看。简单搜索一下后,找到了全部的视频,还带字幕的。课程的内容很简单,就是 用简单的条件判断语句 + 简单的面向对象 + 课程提供的gui库 来写一些小游戏,比如第二周的课程是乒乓。后面的三周时间几乎是废寝忘食的利用所有空闲时间完成了这套课。这是人生中头一次体会到编程的乐趣,虽然代码糟糕的很,毫无技巧,也不优雅,然而程序跑通的那一刻,得到的体验仍然胜过一切,无论是苦刷三天爆了件神装,还是万智牌绝境下神掏逆转,或者是围棋比赛中殚精竭虑战胜了比自己强的对手,都无法与之相比。
2015年10月:辞职自学,路线确定 python web,用flask写了个人blog。
琳琅满目的自学编程路线中无一不是罗列了一堆砖头书,从数学基础到编译原理,我相信推荐人都是好意,然而一个零基础自学的人,得有多大的热情,才能在没有什么反馈的情况下,坚持到学完所有的基础?
这时候看到了萧井陌的答案:“flask源码读懂,就能找到工作”
于是开始学flask,书用的是miguel的那本《flask web开发》,另外有本《explore flask》做参考
这个月比较辛苦,因为啥都不会,照着书敲,前两周大脑一片混沌,总之各种报错,各种搜索,各种补基础,miguel是个好人,长期在他的blog上回答关于他书中的问题。后面敲多了,对MVT框架也就比较清楚了,搜索的内容从清一色的“又报错了,救命TT”,变成了“我想实现这个功能,咋整”。总之在10月31日倒腾出了一个脆弱的个人blog,顺便部署到了sae。
有个插曲,不知道是不是搜了太多的技术名词,某天google的搜索页面变成了星战片尾字幕的效果,然后眼前一黑,进入了一个shell环境,里面是google的试题,可惜当时太弱。
2015年11月~2016年1月:刷题,堆技术栈
checkio刷了一百题
pythonchallenge完成前28关
leetcode每个tag都做了几题
汇智、codecademy的交互式教程看了前端和数据相关的
读完大部分《Problem Solving with Algorithms and Data Structures》
读完大部分《深入 Python 3》
读完一半以上的py3.5标准库
读了一部分cookbook
读了so的一些高票答案
读了很多关于web的技术文章
2016年2月:思考人生,看了几天海,学django,模仿todoist写了个简化版,投简历
这个月内心有些动摇,因为搜了半天没找到年龄大学历低无人脉的人转职成功的先例,更害怕的是投出简历连面试机会都没有,所以用一个多礼拜学了下django然后写了个简单的todolist,打算投几份简历试试,结果没想到,居然成了
其他
关于拖延症:
一个人自学是很容易堕落的,在家里,一不小心,刷刷论坛,一天就过去了。
我自己的拖延现象是非常严重的,虽然已经尽力控制,但还是浪费了不少时间。
我控制拖延的方法,简单的说就是:计划 + 启动。
建议找一款时间管理软件,我用的是 todoist 和 番茄薯仔。
每天起床后花半个小时规划一下一天要做的事情,写进todolist。
写了一堆计划,但最后没完成的多少的现象也是很常见的,所以关键是得开始。
任何事情只要开始做就不那么难了,如果计划列表里的某个任务让你拖延很久确不去做,那你可以试试将这个计划分解成很多简单的步骤。
比如说,你的todolist有一项是 [加入功能A],迟迟不开始是因为这功能实现起来很麻烦。那么这时候可以考虑把 [加入功能A] 改为 [‘搜索问题的答案’,‘读文章找头绪’,'github找现成的实现','读懂别人的代码',‘实现自己需要的功能’],如果还是不愿意动手,可以继续细分,细化到 [打开浏览器,输入问题,点击搜索] 这种程度总能开始做事了。
关于英语:
感觉没必要刻意去学,平时多用就行,比如可以 把刷知乎、贴吧、S1的时间用来刷quora、4chan、reddit,平时追的漫画,先看英文肉。
关于提问:
我自己是完全的闭门造车状态,没有在任何平台提问过任何技术问题。
首先大部分问题都能直接搜到答案。
其次搜不到答案的问题,很大可能是问题描述有问题。
如果问题描述精准且真的搜不到答案,那么“大神”们回答问题的成本也不低,而我又不是妹子,所以实在搞不定的问题宁可遗忘,也不提问。(哪里会有人喜欢孤独,不过是不喜欢失望.)
关于未来:
我知道,我现在只是一个勉强入门“中小型开源Web应用二次开发者”
我很难赶上那些,十几岁开始学,二十几岁就成为行业顶尖的人
但我28岁的时候开始学,38岁的时候至少能成为一个比较成熟的程序员吧
⑩ 可以跳过 Objective-C 然后直接学习 Swift 语言吗
我就是零基础学习swift语言,之前是写javascript,学了有3-4天了吧,说下我的感受,和这个东西与前端开发的关系。开始之前,写下这个答案我的主要观点: 可以跳过oc直接学习swift,一点问题没有的,只不过后期我觉得还是要学下oc,因为毕竟很多时候你用的都是oc写好的类,遇到bug了一点不会,太捉急了吧,还有不少教程都是以oc为例子的,看着也捉急~
首先看swift的基础语法,了解了最基本的控制,变量,数据体,类与结构体,继承之后,开始可以写一些简单的命令行工具,说白了就是终端工具,打印log之类的没一点问题。可惜,我们学习这个东西不是为了开发command line程序的,我用shell或者nodejs也挺好比这个上手还快。所以紧接着第二天开始直接跳过command line程序编写ios app,也就是iphone程序。然后我就觉得我他妈的掉进了一个深坑。搜了一下 现成得swift教程做app的中文几乎没有,国外有几篇讲的是开发一个todolist的教程,写的和官方的那个oc的todolist教程差不多,但是从我开始做到最后结束跑到模拟器里,我他妈也没写上超过20行得swift。。。基本都是IB实现的界面,事件,换场以及控件的创建。我琢磨那他妈的我用oc也是一样的,算了,ios开发莫非就只是拖拖控件?了解一下mvc的概念就ok?于是我去github上开始搜索开源的swift项目,比如2048,还有那个flappy,还有一个天气app的软件。看了几行源码我就特么的放弃了。