Clojure是Lisp语言在JVM上的实现。源代码以.clj为后缀。
官网:
http://clojure.org/
Clojure的安装主要有两种方法:
1.
sudo apt install clojure1.6
2.Clojure的全部功能都被放在clojure-1.8.0.jar中,因此实际上并不需要安装。所谓安装,不过是下载jar,然后让程序能够找到jar即可。因此,更好的办法是利用我们下面提到的leiningen,自动下载相关依赖。
leiningen是Clojure的自动管理工具。
官网:
http://leiningen.org/
project.clj是Leigingen为项目添加的配置文件,类似于Maven的pom.xml。
project.clj中可以定义项目所需的Clojure的版本,并自动下载依赖。因此,很多Clojure项目在依赖上,往往只写leiningen和maven,根本就不提Clojure。这一点和其他编程语言,包括同为JVM语言的scala,还是差异挺大的。
1.
lein new app hello
2.
cd hello
lein run
这里要注意路径,一定要在project.cl所在的路径下执行lein命令,否则会报如下错误:
No :main namespace specified in project.clj.
参见:
https://tonydeng.github.io/2016/07/19/leiningen-clojure-hello-world/
JavaFX和Clojure的结合,本来不是什么新鲜的东西,然而由于相关环境(JDK、leiningen)的演进,网上的demo已经大多不可用了。
这些变动主要包括:
1.由于JDK7的较新版本之后,JavaFX已经集成到JDK中,因此JavaFX的运行时jar不再需要了。相关依赖需要去除。
2.由于leiningen新版本的改变,现在main函数必须在源代码和工程文件中显式定义。
代码参见:
https://github.com/antkillerfarm/antkillerfarm_rubbish/tree/master/clojure/javafx
项目 | 语言 |
---|---|
Hadoop | Java |
Spark | 主要scala,少量Java |
Kafka | 主要Java,少量scala |
Storm | 主要Java,少量Clojure |
这里需要指出的是,Storm虽然被称为是Clojure语言的最知名作品,然而Clojure所占的代码比并不高,还是Java居多。
Groovy是另一种JVM语言,也是与Java最兼容的语言。普通Java代码可以无修改的在Groovy中编译。Groovy源代码以.groovy为后缀。
Groovy使用Gradle或Grape作为自动管理工具,其中后者是Groovy原生支持的,但是现在已经不如前者流行了。
官网:
http://www.groovy-lang.org/
代码参见:
https://github.com/antkillerfarm/antkillerfarm_rubbish/tree/master/groovy/javafx
官网:
http://www.scala-lang.org/
教程:
http://www.runoob.com/scala/scala-tutorial.html
sbt是scala的构建工具,其作用类似于Java的Ant和Maven。
官网:
http://www.scala-sbt.org/
教程:
https://github.com/CSUG/real_world_scala/blob/master/02_sbt.markdown
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt update
sudo apt install sbt
参见:
http://www.scala-sbt.org/release/docs/Installing-sbt-on-Linux.html
sbt有一个和scala类似的命令行交互界面,可以输入相关的命令。其中常用的有:
compile
package
run
scala的GUI方案和Java完全一致,只要Java能用的GUI,scala都能用。这里仅以JavaFX为例讨论scala的GUI开发。
方法一:采用一般的scala调用Java的方式。参见:
http://alvinalexander.com/scala/scala-javafx-hello-world-example
正如上面网页指出的,这里的main函数实际上是有一定技巧在里面的,写起来并不简洁,而且代码风格更像是Java,而不是scala。
方法二:ScalaFX
ScalaFX是对JavaFX的封装,风格更接近于scala。
官网:
http://www.scalafx.org/
sbt支持:
libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.92-R10"
VS Code(Visual Studio Code)是由微软研发的一款免费、开源的跨平台文本(代码)编辑器。(首发于2015年)从文件来看应该是基于nodejs所做,据说脱胎于Atom。
目前我已经用VS Code替换了Source Insight。后者这么多年了,版本才4.0,而且由于收费的缘故,绝大多数人还是使用3.5版本,那可是我2009年刚接触时就有的版本。
官网:
https://code.visualstudio.com/
注:VS Code本身包含了部分闭源代码,社区开源版本叫做VSCodium。这点和Chrome与Chromium比较像。
安装:
umake ide visual-studio-code
可执行程序也叫visual-studio-code
。
在Ubuntu 18.04中,umake安装方法没有处理好依赖,需要:
sudo apt install libgconf-2-4
在Ubuntu 22.04中,没有umake,因此安装方法改为:
wget -O- https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/vscode.gpg
echo deb [arch=amd64 signed-by=/usr/share/keyrings/vscode.gpg] https://packages.microsoft.com/repos/vscode stable main | sudo tee /etc/apt/sources.list.d/vscode.list
sudo apt update
sudo apt install code
Ctrl+P 文件名搜索
Ctrl+Shift+P 命令行
View–> Toggle Word Wrap 自动换行
"editor.rulers": []
:在一定数量的等宽字符后显示垂直标尺。输入多个值,显示多个标尺。
格式化对齐快捷键:
Windows:Shift + Alt + F
Ubuntu:Ctrl + Shift + I
列选择:Shift + Alt + 鼠标左键拖动
注释代码:Ctrl + /
搜索框中可以用上下按键翻搜索历史。
查看数组内容:
*(int(*)[10])arr_name
terminal.integrated.scrollback
:设置终端保存的最大行数。
# (.*)\+\+
文件标签栏多行显示: workbench.editor.wrapTabs
执行Task:F1 + .vscode/tasks.json
filesize:在底部状态栏显示当前文件大小,点击后还可以看到详细创建、修改时间。
Beautify:格式化JS/CSS/HTML代码。
Clang-format: 格式化C/C++/Java/Objective-C代码。需要安装Clang-format:
sudo apt install clang-format
Diff Folders:文件夹比较。
1.安装各个语言的插件。
2.按F5开始调试。首次调试时会让你设置调试配置。
3.调试python时,按下下方状态栏中的python版本信息,可以选择python环境,包括venv环境。
自2019.6之后,新版VS code在新版Ubuntu的默认显示总是很诡异,空格的宽度很小,总让人怀疑是否有空格。
解决办法:
首选项->设置->用户->Editor: Font Family
Consolas,’Courier New’,monospace
remote-ssh是vscode远程编辑/调试的组件。它分为本地端和服务器端两部分,且两者版本必须一致才行。所以,这里主要的问题就是如何下载服务器端,尤其在后者不能联网的时候。
下载地址:
https://update.code.visualstudio.com/commit:<commit-id>/server-linux-x64/stable
or
https://update.code.visualstudio.com/commit:<commit-id>/server-linux-x64/insider
这里的commit-id
可以在vscode的“About”上查到。
将下载的vscode-server-linux-x64.tar.gz
解压到~/.vscode-server/bin/<commit-id>
下。
使用:
Press F1 and run the Remote-SSH: Open SSH Host...
command.
问题:
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run '/home/danny/dev/tools/gdb' as the super user
解决:
sudo sysctl -w kernel.yama.ptrace_scope=0
gdb通过调用ptrace,可以向机器码中插入INT 3指令,从而实现断点。
yama是内核里的安全模块,专门用于管理ptrace的权限。
x86在硬件层面提供了一个特殊的处理器模式:单步调试模式,开启后,CPU接下来执行的每条指令都会触发1号中断。
x86还提供了断点地址寄存器(Debug Address Registers)、调试状态寄存器(Debug Status Register)、调试控制寄存器(Debug Control Register)。
ARM也有类似的东西叫Data Watchpoint and Trace(DWT)。
https://www.zhihu.com/question/578172542
Linux下常用的程序调试器gdb是什么原理?
问题:
客户端更新后连不上远程服务器,一直报错 waiting for server log…
解决:
/home/
$ROOT/node" ${INSPECT:-} "$ROOT/out/server-main.js" --compatibility=1.63 --accept-server-license-terms
参考:
https://blog.csdn.net/wyg1997/article/details/101460961
Remote-ssh服务器端vscode-server安装失败
https://mp.weixin.qq.com/s/n7zyDFOeHd9K5oSKz7Zg9Q
vsCode离线安装remote-ssh插件搭建远程开发环境
https://zhuanlan.zhihu.com/p/294933020
VS Code Server的离线安装过程
例如没有“转到定义”的菜单。
检查C_Cpp.IntelliSenseEngine
是否打开。
最近遇到问题,某插件在某机器上失灵,最后彻底重装才解决。特记录之。
umake --remove ide visual-studio-code
程序安装路径:
~/.local/share/umake/ide/visual-studio-code/bin/code
插件路径:
~/.vscode
和~/.vscode-server
。
其他配置缓存数据:
~/.config/Code
有时插件出问题,当重启也无效的时候,可以试一下:
rm-rf ~/.config/Code/*Cache*
https://blog.csdn.net/GossipHHH/article/details/78132398
VsCode插件安装及推荐
https://mp.weixin.qq.com/s/cw_Bww22sgPtOeNLKQ7HHA
如何使用Visual Studio Code进行Java开发?
https://mp.weixin.qq.com/s/7vG2b900eKfVrvm-fi6IZQ
开发一个爆款VS Code插件这么简单!
https://mp.weixin.qq.com/s/DMzJxeEWVTcPy0ShVFH8Qg
20个必知必会VSCode小技巧
https://mp.weixin.qq.com/s/1EKU6yUXMzhSl9zzgokkIA
VScode数据结构可视化
http://blog.haoji.me/vscode-plugin-overview.html
VSCode插件开发全攻略
http://blog.haoji.me/chrome-plugin-develop.html
Chrome插件(扩展)开发全攻略
中文教程:
http://www.runoob.com/perl/perl-tutorial.html
perl的语法和C差别不算太大,好多语法大致上从关键字也可以猜出来。这里仅对一些符号做个简短的说明。
$name
:变量name。
@name
:数组name。
&name
:函数name。这种情况下,name的定义在使用之后。如果name的定义在使用之前,&
可省略。
%name
:哈希数组name。
perl的包管理器叫做cpan。这实际上也是该工具网站的名字。
您的打赏,是对我的鼓励