TheHack2018结束啦!
有幸在大佬的PY下进入了这次比赛,比赛的项目我们倾注了不少心血,项目的git仓库(前端部分)会稍后发布,我来大致聊聊比赛的感想 比赛总览 本次的我们的项目是一个OJ,没错,English Learners Online Judge,简称 ELOJ,看了界面会发现,这个界面和EOJ简直神似,大致的功能是一个就是英语学习在线评测。可以说是一个EOJ阉割+英语特化专版。 前端是React,后端Springboot,数据库MySql,非常EZ的一个Web应用。 由于我们报的是hack.init()组,所以该组高中生较多,但他们的能力真的一点不输我们,看上其逼格都比我们高。而且捣鼓硬件的能力很强(赛前一直很虚这个,4个之后软件的在这种比赛是非常吃瘪的)。但经过观察后发现,普遍的问题是前端能力很差,甚至很多组没人摸过JS(其实我们组也是,由于我会一点微小的nodejs,就硬着头皮上React了) ...
Read more
JS的readline函数简易封装
JS一直没有一个很好的处理标准输入的方法,在以前,我们需要这样做let readline = require('readline')const rl = readline.createInterface({ input: process.stdin, output: process.stdout})rl.on('line', (line)=> { line.split('<br>').forEach((val) => console.log(val));}) 我们只能用监听换行符来回调去实现标准输入,但这是非常不自然的,结合ES6/8的Promise和async,我们可以对其进行一个简易封装let linemod= require ('readline')const rl = linemod.createI ...
Read more
设计模式之策略模式
设计模式系列的第一站,希望自己能坚持下去。 JDK版本:9(Java8的语言特性) 参考书籍:《HEAD FIRST 设计模式》 IDE: IntelliJ IDEA 策略模式标准定义定义了算法族,分别封装起来,让他们之间可以相互替换,初始化时将对象委托给该算法类进行行为的分配,此模式让算法的变化独立于使用算法的客户 情景(简化版本)有一批鸭子,橡皮鸭不会飞,真鸭子会飞,设计Java类以实现这样的关系比较粗暴的方法定义抽象类Duck,fly方法为抽象,等待具体类去实现public abstract class Duck{ public abstract void fly(); /* *其他具体方法 */}public class RealDuck extends Duck{ @override public void fl ...
Read more
Java爬取图片,并将其发送至指定邮箱中
代码不精,封装无力。。邮件方面的知识不懂,核心原理照着这位大佬的博客敲的,目前只能发给一个邮箱,只能发文本(html也成),密码会暴露在控制台下。下次更新待修改。 package just4test2;import java.io.*;import java.net.*;import org.jsoup.*;import org.jsoup.nodes.*;import org.jsoup.select.*;public class Downloader { private String base; public Downloader(String abase) { base=abase; } public void download(String src,String path) throws Exception { File fp = new ...
Read more
一键模拟登陆华师大公共数据库!ver2.0
花了我整整一天,终于搞定了,爽到。 花了那么久时间主要原因一个是抓包姿势不对【firefox和chrome的抓包结果不一样让人很绝望啊;一个是工具选择不好【辣鸡jsoup httpclient还是强啊,自动维持session和cookie的特性着实方便了不少。 目前还有两个待解决的问题,一是验证码要手动输入,二是rsa,pl,ul这几个参数必须首先登陆一次才能拿到(这跟用户名密码绑定的)验证码手动输入的问题不难,图片很好认,用现有的工具很好搞定。第二个就比较困难了,首先我找不到加密脚本的位置orzpackage just4tset4; import java.util.*; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.HttpVersio ...
Read more
一年免费魔法上网了解一下
在这里我们通过VPS来实现。vps服务器有很多,这里使用digitalocean,因为GitHub学生优惠可以送50刀 网址:点我点我。 点进去注册即送10刀。此外需要先用PayPal或信用卡先充5刀才可以 可以选丐版的5刀一月的套餐,够用。 服务器可以选新加坡或洛杉矶的。 在这个网址申请GitHub学生优惠,需要提供学生邮箱。 之后我们便可拿到优惠码,但由于digitalocean的限制优惠只能使用一次,这里我们参照这位大佬的方法向DO发工单解决。 送的60刀加上自己充值的5刀,账户余额已有65刀。 下载putty,输入给定的ip地址,密码,账号默认为root 键入以下代码 wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/s ...
Read more
Vscode搭建TS环境
简介VSCode 是微软公司推出的一款开源的文本编辑器,因其强大的功能,较快的启动速度(相比IDE而言)和内置的控制台,git等而广受好评。而Typescript同样是微软推出的改良版Javascript,其作为JS的超集,完美兼容ES7的语法之外有着更完备的模块系统,更多的特性(装饰器,枚举),以及编译时的静态类型检查,有效避免了“动态一时爽,重构火葬场”的尴尬。 准备 VSCode NPM (包管理工具) 步骤 打开命令行,键入npm i -g typescript 全局安装TS 继续在命令行环境下键入 tsc -init 进行初始化,你会发现根目录下多了 tsconfig.json 的文件,记录了编译成JS的选项 打开该文件,会发现主要选项已经帮你设置好了,比较常用的设置是 “target” : 编译为何种规范,一般设置为 ES5 或者 ES2016/2017 “outdi ...
Read more
服务器部署nodejs的几种方法
前言由于自身特性的原因。node程序必须保持开启才能访问网站,而当我们关闭SSH时这些进程都会被停止。有以下3种方法可以避免这个问题。 screenScreen,虚拟终端管理器。可以在后台管理终端界面,防止SSH断开以后任务停止运行。 安装方法: sudo apt-get screen (以ubuntu为例) 使用方法: 使用screen -S [任意id]命令进入一个名为id的终端,此时便可以随意执行操作例如执行sudo apt-get upgrade,或者其它消耗时间比较长的工作,像编译内核等等。 按ctrl+a后再按d保存虚拟终端,系统提示deatached即为保存成功接下来可以断开SSH终端,虚拟终端仍会执行。 访问已经创建好的终端screen -ls 列出已经创建的正在后台运行的终端screen -r xxx 进入终端例如 screen -r terminal1 彻底退出sc ...
Read more
Final_Project
Web应用开发大作业分享,感悟,吐槽 Web大作业终于在1个星期内搞定了。说是说一星期,但还是花了不少时间在体育预约程序的设计上。在这上面花的时间要将近3个星期。期间也搞了一下功能阉割版的微信小程序。名字叫做ECNU查询通 但是微信小程序还是太过简单,它缺少一个用户界面。而这次的Web大作业是一个完整的带注册,登录,改密等基本操作的网站。 Repo小程序前端 小程序后端 终极网页版 核心体系 后端采用express+mysql,优点是开发快,代码量少,相比Java更清亮,相比PHP逼格更高(npm社区还是相当活跃的) 后端开发语言用的是TypeScript,编译器的静态类型检查还是挺不错的,有写Java的感觉,遗憾的是冒出来很多类型错误,不得不把类型改为any,这样一来TS的优势实际上就没了,希望下次把TS的文档好好读一读再来重构一下 前端采用了bootstrap+jquery,最对新 ...
Read more