热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[Erlang0083]AllaboutErlangShell

 ErlangShell是一个强大的工具,几乎只要我的电脑开着,就会有一个ErlangShell开着,随时验证想法.就是因为是常用武器,也会有一些常见问题,今天做下回顾,顺便解决两


  Erlang Shell是一个强大的工具,几乎只要我的电脑开着,就会有一个Erlang Shell开着,随时验证想法.就是因为是常用武器,也会有一些常见问题,今天做下回顾,顺便解决两个新问题.算是Erlang shell常见问题的不完全合集了吧.后续和Erlang Shell相关的问题也会在本文追加更新.

  

  对于Erlang Shell有些问题已经有解决方案了,你可以先翻翻下面的列表:

 

[Erlang 0062] Erlang Unicode 两三事 (Erlang Shell中文输出问题) 

 

[Erlang 0056] 用fun在Erlang Shell中编写尾递归 Ⅱ

 

[Erlang 0051] Using ETS in Erlang Shell 

 

[Erlang 0050]用fun在Erlang Shell中编写尾递归

 

[Erlang 0044] Erlang Shell 输入历史

 

[Erlang 0031] Erlang Shell中的输出完整数据

 

[Erlang 0027] Using Record in Erlang Shell 

 

 

老革命遇到新问题之 

 

我还是想看到输出的中文是什么?

 

   之前专门整理过一篇关于Erlang与Unicode的文章: [Erlang 0062] Erlang Unicode 两三事 ,但还是有执著的兄弟就像看看输出的中文是什么,这里可以绕一步,把输出的内容输出到文件,然后在别的窗口(或者把当前shell切换到后台运行)查看,代码如下:

 
14> Dump= fun(Content)-> file:write_file("/data/dump.data", io_lib:fwrite("~ts.\n", [Content])) end.
#Fun6.111823515>
15> Dump(v(1)).
ok
16> 

 

  如果,这个是常用的操作,可以考虑把这个方法放在user_default方便使用;我曾经在 [Erlang 0027] Using Record in Erlang Shell 提到过user_default的用法.

 

 

老革命遇到新问题之

 

把io:format结果输出到文件

 

  群里面有人问"我在erl shell里执行m(). 如何把列出的内容输出到文件里, 因为内容太多了, 一个屏看不完!"如果你尝试上面的方法把结果写到文件,你会发现结果只有一个ok.这是因为m()输出的一大堆结果是io:format的输出,要把这些结果输出实际上要做的是将io:format的结果重定向到文件.我之前提到过,这里其实就是修改group_leader  (参考:[Erlang 0041] 详解io:format)

 

  样例代码如下,记得由于你的结果会全部重定向到文件,所以后续想切换回Shell输出,需要重新设置一下group_leader

 

Eshell V5.9.1  (abort with ^G)

1> group_leader().

<0.23.0>

2> {ok, F} = file:open("dump.data", [write]).

{ok,<0.33.0>}

3> self().

<0.30.0>

4> group_leader(F, self()).

5> m().

6> group_leader(pid(0,23,0), pid(0,30,0)).

true

7> erlang:now().

{1351,776145,62000}

   这个问题有同学发起追问"io:format 也显示不完呢?"  这个其实很简单,我们只需要把rp()的结果重定向就可以了:

Eshell V5.9  (abort with ^G)
1> lists:seq(1,100).
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
 23,24,25,26,27,28,29|...]
2> {ok, F} = file:open("dump.data", [write]).
{ok,<0.35.0>}
3>  group_leader(F, self()).
4> rp(v(1)).
5> 

查看一下文件dump.data:

[root@localhost data]# cat dump.data 
true
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,
 23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,
 43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,
 63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,
 83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100]
ok

 

  关于Erlang Shell还有什么常见的问题?欢迎补充!

 

  最后,送上小图一张,这位美女是 曾华倩 每次看到曾华倩出现在屏幕,就想到何勇的那句歌词:

姑娘 姑娘 你漂亮 漂亮 你抱着娃娃我还把你想

 

[Erlang 0083] All about Erlang Shell

 

2012-11-01 23:26 更新

今天还有一个好消息啊,Nosql Distilled 的电子书版可以下载了,期待Martin Fowler的这本书好久了,终于等到了!!!!

这里就不给出链接了,执行百度吧,很容易找到 epub版本的 

 

NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence [Paperback]

 

Pramod J. Sadalage (Author), Martin Fowler (Author)

 

http://www.amazon.com/NoSQL-Distilled-Emerging-Polyglot-Persistence/dp/0321826620

 

2012-11-5 20:26:35更新

  关于Erlang Shell的扩展除了user_default的方式,不少开发者也不断另辟蹊径:

  著名的Erlang开发者Ulf Wiger2007年在其博客里面提到了一些对Erlang Shell的扩展方法:

[1] Extending the Erlang shell (part 1)

[2] Extending the Erlang shell (part 2)

 

[3] 相关项目地址: http://jungerl.cvs.sourceforge.net/viewvc/jungerl/jungerl/lib/lersp/src/

 

 


推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • springboot项目引入jquery浏览器报404错误的解决办法
    本文介绍了在springboot项目中引入jquery时,可能会出现浏览器报404错误的问题,并提供了解决办法。问题可能是由于将jquery.js文件复制粘贴到错误的目录导致的,解决办法是将文件复制粘贴到正确的目录下。如果问题仍然存在,可能是其他原因导致的。 ... [详细]
author-avatar
品格优良2003_645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有