本身力所能及举行程序员吗?|看美国程序员如何对

盖一个服务端类ChatServer,用于安装端口接收连续

十几年前自己啊勾勒点代码,用Borland C++
Builder。也还依稀记得第一次于探望“Hello
World”时之心跳。如今程序员进化成了一个幽默而非常之人流。除了程序员,还有哪位社会群体有专属的段子集?国家以腾飞,科技于创新,而“青年之感人的处在,就在于种,和她俩之远大前程。”我是打杂的呢。

package com.swift;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatServer {

    public static void main(String[] args) {
        try {
            ServerSocket ss = new ServerSocket(8888);
            for (;;) {
                Socket s = ss.accept();
                //当有连接,则显示,用于测试
                System.out.println("a client connected success");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

客户端修改代码如下:

自己能举行程序员吗?在Reddit和任何网络社区,这是独夹杂在编程热门话题里之广阔问题。自我怀疑,在新家的心挺普遍。他们往往想在,总有那么说话,这个嫌疑将会干净破灭。

package com.swift;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class ChatClientFrame2 extends JFrame {

    private static final long serialVersionUID = -118470059355655240L;
    JLabel label_shang=new JLabel();
    JLabel label_xia=new JLabel();
    JTextField tf = new JTextField(38);
    JTextArea ta = new JTextArea(15, 50);
    JButton button=new JButton();

    public ChatClientFrame2() {
        setBounds(200, 200, 500, 400);
        setTitle("客户端聊天工具 —— 0.3");
        //对窗口进行大的布局,分为三行一列,在pBasic面板上添加三个面板shang zhong xia
        JPanel pBasic=new JPanel();
        pBasic.setLayout(new BorderLayout());//不设置默认也是这种布局模式
        setContentPane(pBasic);//把面板放在窗口上,不记得用this.关键字
        JPanel shang=new JPanel();
        JPanel zhong=new JPanel();
        JPanel xia=new JPanel();
        //设置JPanel面板的大小
        shang.setSize(470, 25);
        zhong.setSize(470, 180);
        xia.setSize(470, 40);
        pBasic.add(shang,BorderLayout.NORTH);
        pBasic.add(zhong,BorderLayout.CENTER);
        pBasic.add(xia,BorderLayout.SOUTH);
        shang.setBackground(Color.red);
        zhong.setBackground(Color.yellow);
        xia.setBackground(Color.blue);
        /*
         * 三个面板,上边放一个标签“聊天记录”,中间放一个文本域,
         * 下边分为左中右——分别放标签“输入信息“,文本框和”发送“按钮
         */
        label_shang.setText("聊天记录");
        shang.add(label_shang);
        ta.setLineWrap(true);// 自动换行
        JScrollPane scroll=new JScrollPane(ta);// 增加滚动条,以便不增加行数
        zhong.add(scroll);
        label_xia.setText("输入信息");
        xia.add(label_xia,BorderLayout.WEST);
        /*
         * 增加功能,窗口监听事件,窗口打开时设置光标焦点在tf文本域中
         */
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowOpened(WindowEvent e) {
                tf.requestFocus();
            }
        });
        xia.add(tf,BorderLayout.CENTER);
        button.setText("发送");
        xia.add(button,BorderLayout.EAST);
        /*
         * 增加“发送”按钮的功能,增加回车的功能,监听相同,
         * 则使用内部类实现,以提高代码复用性
         */
        final class ShareListener implements ActionListener{

            @Override
            public void actionPerformed(ActionEvent e) {
                String taText=ta.getText();
                String tfText=tf.getText()+"\r\n";
                ta.setText(taText+tfText);
                tf.setText("");
            }
        }
        button.addActionListener(new ShareListener());
        tf.addActionListener(new ShareListener());
        //通过压缩自动调整各个面板
        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 点关闭按钮同时退出程序
        setVisible(true);
        //创建窗体直接调用连接服务器
        connect();
    }

    /*
     * 增加一个连接到服务器的方法
     */
    public void connect() {
        try {
            Socket s=new Socket("127.0.0.1",8888);
            System.out.println("connected!");
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        // 别忘了创建窗体对象,也可以用生成对象调用其他的方法如launchFrame()
        new ChatClientFrame2();
    }

}

那么,你怎么知道已经修成正果了吗?

先期管劳务端类ChatServer运行

恐你得上网去订一仍朋友推荐给你的书。Robert C. Martin (Uncle
Bob)写的《Clean
Code》是同以颇好的修!但是当您满怀雄心壮志,兴冲冲潜心投入上时,却发现书里那些说读起来便像外星文,而且概念模糊不明。自我怀疑生长了,但是连不曾吓退你。

复运行客户端类ChatClientFrame2 运行

忘记了当时排开吧——让咱们错过看在线课程!

独家查看服务器端运行结果如下:

汝跑至Treehouse上登记,开始沿着他们所谓的“轨道”学习。啊,现在您开学了!或者至少你以为是以念(某种程度上,还算)。这样过了重重只钟头,你已经得以做出一个手机app,或者一个能用的web网站。在那一刻,你感到非常骄傲。你呢真正应该骄傲。于是,你向心上人等跟妻小展示你的作品。他们的感应是“噢,挺酷……挺不错……是休是?”

葡京在线开户 1

充满了自信之小气球漏了接触气,不过还行,你还得漂浮于上空。

客户端运行结果如下:

于成功了几长条Treehouse轨道,还发出把别的手把手辅导课后,你确定你是同样称为程序员了。合乎逻辑的产一致步冒了出来,“到了把自身头脑中的app变成现实性的时段了!”

葡京在线开户 2

公启动选好之IDE,姿势非常到,手指准备于键盘上疯奔,你准备好只要当显示器这块画布上填绘代码了。

客户端窗口打开时,光标位置

题材是,一片空白。所有那些教程以及而念的那么半本书,在即时一刻未曾也帮助你办好准备。你只见着深渊,它吗回凝视着若。自我怀疑在你对肩膀上以了下来,在您耳边轻语:“Hello……想我了吗?”它比较你想像着的再多矣。

葡京在线开户 3

每当这儿,我当你确实只有个别只选择:

 

  1. 领悟到您的多疑是指向之。你免容许做个程序员。你虽是不敷聪明。没照而您及得了了那些CS课程,或许你可知不辱使命。但是它便是休称你。Ok,你已经证实了,于是你改变去人生的下一站。真的不要觉得羞愧。如果这是你的支配,这是100%好之决定。但于及时一阵子,你莫是程序员(我说“这一刻”,是坐自深信你得随时回来,再次尝试)。

  2. 乃再查看几全面前买的那本书。快速翻看,寻找“如何开始一个Xcode项目”那无异回。你找到了,可为没有什么帮助。于是你再次登陆进Treehouse,再次访问课程。有点帮助了,但是若还不够点啊。于是你试试了接触别的——你于Google里Google得天昏地暗。冷不丁地,你注册了StackOverflow,它成了公的初主页。又过去了数不穷的钟点,那个app可以运作了,它说:“Hello
    World,这是自个儿先是个次的起点。”你知道前的路还坏丰富,但这,那新鲜出炉冒着热气的次像只刚破壳的粗鸡凝望着公,你是一致名程序员了。

设您挑了增选#2,自我怀疑会逐渐爬下你的肩,轻声说有最终分别的言语:“干得头头是道。我们还见面再见。”

探望,一切就是这般。你晤面写到一百实施代码,而怀疑会再次发头来。你晤面当这行业度过两年时,它以会再也突显。如果你可以在马上会频频的战役中执作战——如果你要着战斗,愿意倾尽全力去探寻寻问题的答案,那么自己当你早已胜利了,百分之百地。

森人在先后的大洋里第一糟糕游泳时去了勇气。困难让他俩当将给淹死了。但是自在这时告诉你,最初你就待踏一踏水。

贩几本书。注册在线课程。YouTube上看教程。最要之,构建而自己的先后——不管发生多么小!

学习,构建,重复。

受这成你的咒语吧!

以你是程序员。


作者Alan Scarpa,一位iOS开发者。

https://medium.com/@alanscarpa/can-i-be-a-programmer-2acbe241c317\#.y38p2s5qi