0%

前言

Kotlin 是 Jetbrains 公司开发的语言,与 Java 具有紧密的关系,同时得到了 Google 的官方支持,目前大量的使用在 Android 开发中。因为写 APP 还是比 PC 端程序感觉上更有意思一点,所以最近开始从头学 Kotlin。(我也知道现在更应该学 Js 或者看论文或者加深计算机算法等基础 ,但是这种像打游戏一样的欲望实在是难以克制,有好多想写的 APP)

找到了很多相关的参考资料,现列举如下。

在上面的资料中,几乎哪个都试过了一点。 Udacity 是视频 + 练习,视频的连接质量很棒,内容看了一部分也很棒,但是感觉看视频总体来说学的比较慢,由于个人时间较为紧张还是偏向文字类的教程。然后有看到 Kotlin 的官网有 Kotlin Koan 系列,也就是 Kotlin 心印,是 在线的代码运行环境,搭配教程和练习,使用了一下感觉很棒,正打算使用这个学习。但是又发现说 IDEA 有 Edu 插件,可以直接在 IDE 里学习。我想了想 IDE 好歹是客户端,速度和效果上肯定会比 Web 好,于是最终投身了 IDEA + EduTools。然而这个使用的是上面最后的 HyperSkill.org 的教程,这个网站的联机质量奇差,非常非常慢……但是进去看了看,是边做项目边学,而且把知识点按树状分叉,还有前置节点等等看的超有感觉。

JetBrains Academy Knowledge Map

PS:本篇文章假设读者具有 Java 编程基础。

Related Blogs:

阅读全文 »

总是记不住大端和小端各是哪些方向……

这回一定要结合实践记住。

首先,字节序表示了字节之间的关系。字节内部是什么顺序,是不会受到影响的。切勿因为一个字节的十六进制表达为2个符号就觉的也需要进行顺序的调整。

拿栗子来说明,12345678H 这个数据,也就是 0x12345678 (H 与 0x 均为16进制表达的标志),也就是十进制的 305,419,896 ‬(列出十进制以避免理解差错)。

如果是按大端存储,假设起始地址为0x00004000,那么有各个地址存储的数据如下表。

地址 0x00004000 0x00004001 0x00004002 0x00004003
数据 12 34 56 78

小端存储则会是相反的顺序。

地址 0x00004000 0x00004001 0x00004002 0x00004003
数据 78 56 34 12

用文字来表达,就是 高位放在低地址是大端。 更切实的记忆方法就是,如果地址从左到右增大,那么按照大端书写,其顺序与原来数据的顺序是相同的。这样去看的话,小端就有些别扭了,尤其如果以32位字为单位存储的数据,小端存储的数据需要你反着读每4个字节。

OK,希望到这里已经让你弄明白了。下面只是一些具体应用与杂七杂八的。

小端序最常见的应用是 x86 的处理器,所以如果你在使用 PC 机,大多数情况下就是在使用小端序。

根据 Wikipedia,大端序的典型应用还有 IBM 的 PowerPC 970 等。另外互联网为了统一数据的格式,统一采用大端序。被称为网络序或者网络字节序。

当时学计组的时候,记得有说 MIPS 是 大端序,但是参考 Wiki 后说 ARM 和 MIPS 都是可配置字节序的,所以这里就不妄言了。

前言

今天的软件安全课程介绍了部分的磁盘相关的知识,但是课件上的内容属实有些难以理解,而且略有些落后于时代,这里收集总结了部分与磁盘相关的知识。

内容大概包括:

  • 磁盘分区类型
    • MBR
    • GPT
  • 文件系统
    • FAT32
    • NTFS

参考文献:

阅读全文 »

前言

Word 是非常常用的软件,熟练掌握常用快捷键还是很有必要的。

最近在使用的时候偶然发现 Word 的 Redo 和其他软件有些区别。几乎所有的软件都将 ctrl + Z 设置为 Undo,而很多的软件也将 ctrl + shift + z 设置为 Redo,这样可以快速的回退或前进至合适的位置。但是 Word 的Redo 默认是 ctrl + Y ,着实有些不方便。简单搜索没有找到合适的方法就自己改了。

阅读全文 »

前言

最近突然想写一个一直以来想要的 App , 用于记录每日做的事情,做一个统计,最好能一眼看到一共学了什么多少个小时(可能是之前的 10000 小时情结)之前在安卓端有看到一个类似的 App , 但是主打功能是番茄钟,另外有 VIP。于是打算自力更生写一款。但是这回想试试 Windows PC 端,而且希望 App 能有比较便于使用的图形化界面,所以这回不打算用之前的语言,用 Windows 家的 C# 试试,毕竟自家原生支持肯定会非常好。

但是这就面临了学习一个新语言的问题。回想自己的各个语言都是怎么学习的:

  • C : 啊哈C语言,洛谷,程序设计专业课
  • Python : 菜鸟教程,Codecademy
  • Java : Head First Java, Head First Android.
  • Javascript : MDN , 廖雪峰的教程

最后想了想还是用 Head First C# 来学习 C# .

阅读全文 »

前言

好久没有写 blog 了,上一篇 paper 看了太久了,中途把 Terraria 完成了全成就,追了 2 季的 Agents of SHIELD, 简直要多飘有多飘。之后会写一篇关于学习与娱乐的反思。

其实之前想做 苏菲的世界 的读书笔记,但是之后一直也没有读,也就作罢,从昨日正式开学,时间又会少了很多,给自己定个小目标一周保底一篇吧,免得之后又把这些都扔掉。

Head First 系列之前读过 Head First Java ,感觉非常不错。是大学期间除了教材少数完全读完的书。 Head first 系列注重刺激大脑,保持清醒与注意力,提高学习效率等,有着一套自己的理论,就个人体验来说还是非常不错的。而且相比满页满满当当全是字的书,这个系列的书有着大量的插图,读起来很快,容易让读者保持 膨胀 信心。

Head First Design Pattern 以 Java 为例,介绍设计模式,内容偏向 软件开发。

正文

文中举了例子说明问题,下面是大概内容:几个子类要添加一个共同的新功能,如果直接在父类上添加该功能,是一个讨巧的方法,但是可能会导致一些其他本不该拥有该功能的子类获得该功能。如果把这些功能写成 Interface ,让有这些功能的子类自行实现 Interface,就会发现越来越多的子类,每个有这个功能的子类都要实现一遍,会带来大量代码冗余。此外冗余还会带来额外的问题:修改功能时更为困难等。

这里本书引出了第一个 Design Principle。

DESIGN PRINCIPLE
Identify the aspects of your application that vary and separate them from what stays the
same.

Here’s another way to think about this principle: take the parts that vary and
encapsulate them, so that later you can alter or extend the parts that vary
without affecting those that don’t.

给出的具体解决方法为 针对会变动的功能,单独实现一套不同的类,把其余不变的特性维持在父类里。然后我们针对会变动的功能,编写函数能够让实例动态更新功能。具体而言相同一套类实现同样的接口, 而在最初的父类中添加接口类型的成员变量,然后对于特定子类特定功能,在构造函数中为成员变量赋值。

DESIGN PRINCIPLE
Program to an interface, not an implementation.


施工中……

前言

上一篇论文用了前前后后 4 天 才将阅读笔记做完,而且还是在 中间部分跳过了一部分内容的情况下,效率还有提高的必要,不然恐怕面试前连 2019 年的 S&P 的都刷不完。不过之后的论文的阅读策略可能会比较偏重于了解基础和背景(因为底子太弱了),学习写作和做研究的手法技巧,例如上一篇能好好的理解一下HTTPS 和 PKI 等也很不错了,至于论文内部实施的一些具体细节如果感觉有些过于高大上或者没必要细读可能就会直接跳过。

下一篇的 Paper 题目为 EmPoWeb: Empowering Web Applications with Browser Extensions ,令我注意的是这篇 paper 的作者只有 1 人诶,好强。

过了一遍摘要,又是一个做 Extension 的文章,大致内容是 Web Application 收到的约束比较多,遵守SOP(同源策略),但是 Extension 受到的约束较少,尤其令人印象深刻的是与上一篇做 extension 的论文一样用到了 elevated 这个词哈哈哈。

Browser extensions are third party programs, tightly integrated to browsers, where they execute with elevated privileges in order to provide users with additional functionalities.

Abstract 第一句

然后问题出在 Web Application 与 Browser Extensions 之间的通信信道,Web Application 借由 Browser Extension 的 API,可以做到 bypass SOP, 获取其他 Web Application 的用户数据,用户凭证(cookies),浏览历史,书签,已安装的 Extension,Extension 的存储,在用户设备下载并保存任意文件。

阅读全文 »

前言

转眼已经进入2月,假期已经荒废了20余天,随着市区里的一例确诊病例,六线小县城也变得紧张焦虑起来。

接下来半年将是决定保研成败的关键时期,没有时间可以浪费了,由于暂时没有项目做,就刷 paper 扩展一下知识面先。由于小白也没什么筛选能力,就先从四大顶会(S&P, CCS, USENIX, NDSS) ,开始刷咯。

由于之前已经确定要做浏览器安全,Web安全,所以就直接跳过其他领域,直接找 Web 相关。

按照顺序从 S&P 开始,S&P 的 paper 被按照 session 分开。其中,Session 3: Web Security 与 Session 15: Web and Cloud Security 看到题目与我们的领域挂钩,于是从这里开始。

今天开始读第一篇 paper :Does Certificate Transparency Break the Web? Measuring Adoption and Error Rate , DOI: 10.1109/sp.2019.00027 .

阅读全文 »

前言

最近一直在使用 IMABI 的日语教程自学日语, IMABI 是非常优秀的免费日语教学网站,内容使用英语书写,所以最近萌生了将课程中的一些重要内容使用汉语记录下来方便日后学习查阅。

这次的博文将以 IMABI 的第九课为基础,记录一些相关知识点。其题目为 Copular Sentences I: Plain Speech ,其中 Copular 不知如何翻译为好, 因为语言学相关知识匮乏,乱翻译误人子弟也不好,所以就不再做过多解释,内容主要是最基本的判断句式的简体形(相对于敬体)。

阅读全文 »

前言

Markdown 如今已经是非常常用的语言了,而且每一篇博客又都需要用 Markdown 来编写,所以有一个得力的编辑器还是很重要的。在此之前一直使用 VS Code + Markdown 扩展来写博客,在绝大部分情况下还是够用的,一些简单的自动补全以及高亮,插件还可以提前预览,唯一的问题在于扔图片是真的麻烦,虽然语法本身不算麻烦,要的就是个链接以及备注而已,但是由于要放到互联网上,从哪里储存图片等等都是一些要思考的问题,所以导致在博客中使用图片变得十分繁琐。

本文先介绍 Typora 编辑器,在之后介绍 Markdown 使用图片 以及博客下使用图片的一些问题,最后介绍使用 Typora 快速使用图片的一些方法。

阅读全文 »