标签 源码 下的文章

Hide Locked Problem In LeetCode Chrome插件 开发总结

在公司的黑客松放弃治疗之后,好久没有看我的 GitHub 了,于是更新了一下自己的其中一个万年大坑。

项目地址:https://github.com/csvwolf/hide-locked-problem-in-leetcode

这里推荐一下一个汉化版的开发手册:https://crxdoc-zh.appspot.com/extensions/

在上一版中简单的做了一个click触发的插件,不是我理想中的效果,于是研究了一下如何对页面加载做监听,甚至是监听指定的 DOM 载入。

- 阅读剩余部分 -

WangTrans 开发手记

WangTrans,汪星语翻译机开发其实已经一个多月了,也就是在半天里消极怠工写的东西,尽管依旧no star,不过发布在npm之后竟然也有莫名其妙的下载量,当晚就想总结一下学到的一些东西,但是由于每天回家都是——好累,不想动的循环,所以就拖到了现在。

想法的来源是因为单身狗每次都要手动输入汪汪汪+拼音,在虐狗节就非常的麻烦!说干就干……所以这是个非常标准的玩具。

第一段废话完:https://github.com/csvwolf/WangTrans

- 阅读剩余部分 -

Ubuntu/Python 结巴分词 + Word2Vec利用维基百科训练词向量

结巴分词是一个跨语言的中文分词器,整体效果还算不错,功能也够用,这里直接用Python了,其他主流语言版本均有提供。

Word2Vec,起源于谷歌的一个项目,在我刚开始接触的时候就关注到了他的神奇,大致是通过深度神经网络把词映射到N维空间,处理成向量之后我们终于可以在自然语言处理上方便的使用它进行一些后续处理。(具体的方法忘了)

Python的gensim库中有word2vec包,我们使用这个就可以了,接下来我们就对维基百科进行处理,作为训练集去训练。(包地址:http://radimrehurek.com/gensim/models/word2vec.html

本文参考:http://www.52nlp.cn/中英文维基百科语料上的word2vec实验

- 阅读剩余部分 -

Python 从多人聊天室开始谈系列 - Tkinter GUI

接下来我们差不多能聊起来了,剩下的就是解决上一篇中我们遗留的登出移除问题以及做一个界面,那样我们就能给更多的人用啦。

选择Tkinter,主要是,作为一个没有其他语言GUI基础的人,入门最简单粗暴的方法可能就是这个了。

关于Tkinter,网上的资源其实说不上太多,还是比较难找的,尤其是对于一个写惯了HTML/CSS的,其实是挺痛苦的。

Tkinter的布局教程可以看这里:http://effbot.org/tkinterbook/grid.htm

- 阅读剩余部分 -

Python 从多人聊天室开始谈系列 - 多线程

完成了上一个版本,我们会发现,根本聊不起来啊!

问题的关键在于,我们现在的程序,一次只能干一个事情,你让我等待输入了,我就不能好好输出了。

所以我们需要在此引入多线程的概念,多线程的概念,简单的来说,就是,我因为只有一个人,你让我去干一件事还可以,两件事我不行,那多加一个人,总可以干了。

那么阻塞呢,意思就是说:由于我干了这个,不能干那个,我们把这个现象叫做阻塞。

概念都理解了之后,我们知道了,只要多加一个线程就行了!

实现多线程有几种方法,具体来说,我们可以看一下这篇:
http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944771.html

- 阅读剩余部分 -

Python 从多人聊天室开始谈系列 - Socket

接下来我们首先略过了Python的基础,这一部分,随便找一本Python的书看看就行了,习惯了没有;的人生之后,在必须的语句里记得加:,基本上你就进入了Python模式。

当然,由于赶时间,这里很多可能不是最优写法,大家可以去GitHub提出=v=。

官网Demo有云:

# Echo server program
import socket

HOST = ''                 # Symbolic name meaning all available interfaces
PORT = 50007              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
conn.close()

- 阅读剩余部分 -

Python 从多人聊天室开始谈系列 - 起始

这次的操作系统课设要做聊天室,众所周知的是,Node.js家有强大的socket.io,官网的demo就能让你分分钟速写聊天室——但是并没有什么卵用。

从操作系统的角度,我们决定从底层出发,去挖掘一下究竟一个轮子是怎么样实现的。

首先先决条件,我们需要学习:

  • Python基础
  • Socket(TCP)知识
  • Thread(多线程)
  • GUI(Tkinter)

    目标是最快的速度学习并实现我们的一个简单而且比较稳定的聊天室。

![多人聊天模式](media/%E5%A4%9A%E4%BA%BA%E8%81%8A%E5%A4%A9%E6%A8%A1%E5%BC%8F.png)

我们首先先来简单的了解一下Socket的模式:一个Client与一个Server建立连接,那么多个Client的情况,就需要把Server作为转发器来进行消息的转发,然后由Server推送到另一个Client中。

在GitHub中有完整的代码,接下来的介绍也是按照我的版本迭代顺序来的=v=:https://github.com/csvwolf/sky-chatting-room

蓝桥杯 基础练习 01字串

对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:

00000

00001

00010

00011

00100

请按从小到大的顺序输出这32种01串。

对于这题,你想到了什么吗?

没错,这题其实是二进制加法的变种,依次递增而已,并没有什么区别。

事实上,上学期写过二进制加法的代码,感觉应该不太难,结果脑子生锈了。

本题没有输入,我们来看看代码吧,因为只是一个二进制累加问题:

- 阅读剩余部分 -

蓝桥杯 基础练习 字母图形

利用字母可以组成一些美丽的图形,下面给出了一个例子:

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

这题的问题不大,关键是找规律,很快我们就看出来,第一行和第一列是字母顺序,而剩下的则是对角线相同的关系。

数字规模也非常小,那就好说了。

import java.util.*;

public class AlphamosicGraphics {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        int m = in.nextInt();

        char[][] arr = new char[n][m];

        for (int i = 0; i < n; i++) {
            arr[i][0] = (char)('A' + i);
        }

        for (int i = 0; i < m; i++) {
            arr[0][i] = (char)('A' + i);
        }

        for (int i = 1; i < n; i++) {
            for (int j = 1; j < m; j++) {
                arr[i][j] = arr[i - 1][j - 1];
            }
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print(arr[i][j]);
            }

            System.out.println("");
        }
    }
}