jupyter-基于笔记本编程jupyterlab+kotlin

前言

日常开发中,经常有些探索性的工作需要处理。这类工作更多的是验证可行性,不需要像典型的工程那样遵守目录结构,严格编码,笔记本是做这类工作的良好载体。

jupyter本来是python平台的工具,拓展之后可以用来运行kotlin(间接运行java),也是挺好用的,比java11的jshell好多了;看来跨语言的相互借鉴还是蛮有意义的。

jupyter搭建

也可以参考jupyter-docker-stackskotlin-notebook来安装

安装anaconda

使用scoop来安装anaconda。

//搜索anaconda
scoop search anaconda
//全局安装anaconada
scoop install -g anaconada

安装和卸载notebook

打开anaconda prompt命令窗口:

conda search notebook
conda install notebook=6.4.12
conda remove notebook

导出html可能报错:

module 'jinja2' has no attribute 'Markup'

原因是jinja2版本太高了。把原来的移除,安装旧版本:

conda remove jinja2
conda install jinja2=3.0.3

安装和卸载jupyterlab

conda search jupyterlab
conda install jupyterlab
conda remove jupyterlab

安装和卸载kotlin解释器

//安装
conda install -c jetbrains kotlin-jupyter-kernel
//更新
conda update -c jetbrains kotlin-jupyter-kernel
//卸载
conda remove kotlin-jupyter-kernel

为什么不用IJava解释器呢?个人觉得java冗余的语法不适合笔记本编程的体验。

修改默认工作目录

//生成配置文件
jupyter notebook --generate-config
//搜索配置项
c.NotebookApp.notebook_dir
//配置为默认路径,去掉#解注释,配置项前面无空格
c.NotebookApp.notebook_dir = 'D:\jupyter'

删除掉目标框的"%USERPROFILE%"变量
在这里插入图片描述

配置局域网访问ip

# 使用jupyter生成密码
# 生成的密码保存在~/.jupyter/jupyter_notebook_config.json文件中
jupyter notebook password
# 修改配置文件参数
c.NotebookApp.ip='*' 
c.NotebookApp.password = u'你的密码'

安装扩展程序包

# 安装拓展包
conda install -c conda-forge jupyter_contrib_nbextensions
# 应用拓展包
jupyter contrib nbextension install --user
# 开启代码提示
jupyter nbextension enable Hinterland/main --user

配置主题

# 安装主题
conda install -c conda-forge jupyterthemes
# 查看主题列表
jt -l
# 切换主题
jt -t <主题名> -T -N

个人推荐:gruvboxl,黄色背景,护眼;idea也有同款Gruvbox Theme,配合Material Theme UI很赞。

jupyterlab基本操作

打开anaconda prompt命令窗口,输入:

jupyterlab

或者点击图标
在这里插入图片描述

jupyter服务器运行起来,在浏览器中输入http://localhost:8888/lab即可打开jupyterlab的工作界面。

查看帮助

:help

在这里插入图片描述

使用依赖包

官方依赖包

使用%use语法。

默认版本
%use fuel
指定版本
%use fuel(2.3.1)

默认版本定义在..\anaconda3\2021.11\Lib\site-packages\run_kotlin_kernel\librariesjson文件中。

其他依赖包

指定依赖仓库
@file:Repository(<absolute-path>)
@file:Repository("*mavenLocal")
指定依赖包
@file:DependsOn(<coordinates>)
@file:DependsOn("com.squareup.okhttp3:okhttp:4.9.3")

默认的依赖仓库为:

默认使用maven下载依赖,依赖存放位置:~/.m2

查看类路径

:classpath

在这里插入图片描述

查看变量表

:vars

在这里插入图片描述

设置jdk版本

通过配置如下环境变量设置jdk:

  • KOTLIN_JUPYTER_JAVA_HOME
  • JAVA_HOME

配置jvm参数

  • KOTLIN_JUPYTER_JAVA_OPTS
  • JAVA_OPTS

配置额外参数

  • KOTLIN_JUPYTER_JAVA_OPTS_EXTRA

查看jdk版本

新建一个kotlin笔记本,打印java相关信息:

System.out.println(System.getProperty("user.home"))
System.out.println(System.getProperty("os.name"))
System.out.println(System.getProperty("java.home"))
System.out.println(System.getProperty("java.version"))
System.out.println(System.getProperty("java.vm.name"))
System.out.println(System.getProperty("java.vm.version"))
System.out.println(System.getProperty("java.vm.vendor"))

在这里插入图片描述

jupyter kotlin常用库介绍

使用:help命令可以查看官方收录的库。

http客户端fuel

引入依赖并导入类

%use fuel(2.3.1)
import com.github.kittinunf.result.*
import com.github.kittinunf.fuel.core.*

调用百度接口搜索

FuelManager.instance.basePath = "https://www.baidu.com"

Fuel.get("/s", listOf("wd" to "fuel"))
    .response()

执行结果如下:
在这里插入图片描述

由于时间精力的关系,这里不推荐使用:help里面收录的库,而是直接使用java库,毕竟java本身的库又多又全。使用kotlin jupyter,确实需要学习kotlin的一些基本的语法,但是依赖包尽量还是用java的,减少学习的成本。

从另一个角度讲,java本身的库本来就多,学都学不过来,没必要在使用kotlin的第三方库(kotlin标准库还是要了解下);相反,可以把kotlin jupyter作为实验java库的平台,了解并实践java库的入口,甚至,可以用来快速编写并调试一段算法。这些都有助于对java的理解和运用。

kotlin一些必要的语法

  • 语句不用写分号
  • 新建对象不用new,直接调用构造函数
  • 变量前面无需声明类型,用valvar关键字
  • 创建数组:arrayOf,intArrayOf,doubleArray,…
  • 数组变可变长度参数:变量名前加*
  • 创建map:mapOf,mutableMapOf
  • 创建list:listOf,mutableListOf
  • 创建set:setOf,mutableSetOf

guava的使用

在这里插入图片描述

java11 HttpClient

在这里插入图片描述

apache commons rng

根据官方文档探索真是给力,没有编译时间,不用喝咖啡。
在这里插入图片描述

xchart

@file:DependsOn("org.knowm.xchart:xchart:3.8.1")
import org.knowm.xchart.*
val xData=doubleArrayOf(0.0,1.0,2.0)
val yData=doubleArrayOf(2.0,1.0,0.0)
val chart=QuickChart.getChart("Sample Chart","x","y","y(x)",xData,yData)
BitmapEncoder.getBufferedImage(chart)

其他

  • tablesaw
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

ssehs

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值