ruby日记1

1.irb参数配置

~/.irbrc

IRB.conf[:PROMPT_MODE] = :SIMPLE  #简化 irb 提示符,以及禁用一些烦人的自动缩进行为
IRB.conf[:AUTO_INDENT_MODE] = false

2.注释:

#单行

=begin

......多行

=end

3.字符串

字符串连接

>> "jk" + "jk"
=> "jkjk"

字符串插值

>> one = "foo"
=> "foo"
>> "#{one} is one"
=> "foo is one"

字符串打印

>> puts "jk"  #打印后自带一个换行符
jk
=> nil
>> p "jk"  #打印出和原来一样的
"jk"
=> "jk"
>> print "jk"  #打印不换行
jk=> nil

单双引号字符串

>> ‘jk\n#{one}‘    #不进行转移字符和插值操作
=> "jk\\n\#{one}"
>> "jk\n#{one}"    #输出转义后的字符和插值操作
=> "jk\nfoo"

对象和消息传送

>> "jk".length
=> 2
>> "".empty?
=> true
>> "jk".nil?
=> false
>> "jk".include?("j")
=> true

判断的时候可以配合 &&(和) || (或) !(非)来操作

>> one = "foo" => "foo">> two = ""
=> ""
>> if one.empty? && two.empty?
>> print "both empty"
>> elsif one.empty? || two.empty?
>> print "empty exist"
>> elsif !x.empty?
>> print "x is not empty"
>> end
empty exist=> nil

to_s可以把任何对象转换成字符串

>> nil.to_s.empty?
=> true

unless判断

>> two = "dasd"
=> "dasd"
>> print "ss" unless two.empty?
ss=> nil

使用!!可以两次取反,把对象转换为布尔类型

>> !!nil   #nil对象为布尔假
=> false
>> !!0    #其他都为真
=> true

数值和范围

split方法,将字符串分割成想要的字符数组

>> "dasjkd das d   dasd".split   #默认去掉空格
=> ["dasjkd", "das", "d", "dasd"]
>> "fdjaskl,jfdskl,jfklasd".split(",")   #设定用,分割
=> ["fdjaskl", "jfdskl", "jfklasd"]

数组的索引

>> a=[12,34,45,67,89,8]
=> [12, 34, 45, 67, 89, 8]
>> a[0]
=> 12
>> a[2]
=> 45
>> a[-4]    #索引可是负数
=> 45>> a.fifth    #可以这样查找,但这是rails添加的效果=> 89>> a.first=> 12>> a.last=> 8

>> a=[12,34,45,67,89,08]     #注意数字之前不能有0,提示错误无效的十进制SyntaxError: (irb):40: Invalid octal digita=[12,34,45,67,89,08]                    ^

数组的一系列方法

>> a.length
=> 6
>> a.include?(45)
=> true
>> a.sort            #按有小到大顺序排列(不改变原有数组)
=> [8, 12, 34, 45, 67, 89]  
>> a.reverse          #顺序反过来
=> [8, 89, 67, 45, 34, 12]>> a.shuffle          #随意打乱顺序=> [45, 12, 8, 34, 67, 89]>> a.sort!           #按有小到大顺序排列 (改变原有数组)=> [8, 12, 34, 45, 67, 89]>> a.push(4)      #添加元素 (改变原有数组)=> [8, 12, 34, 45, 67, 89, 4]  >> a << 3             #添加元素(改变原有数组)=> [8, 12, 34, 45, 67, 89, 4, 3]  >> a << "tu" << "re"      #串联添加,并且数组中可以添加其它类型的元素=> [8, 12, 34, 45, 67, 89, 4, 3, "tu", "re"] >> a.join          #将字符串合并=> "8123445678943ture">> a.join(",")        #添加连接符=> "8,12,34,45,67,89,4,3,tu,re"

范围操作

>> (0...9).to_a      #去掉最后的一个值,转化为数组
=> [0, 1, 2, 3, 4, 5, 6, 7, 8]
>> (0..9).to_a      #保留所有至
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>> a=(0..9).to_a        
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>> a[4..(a.length)]    #使用length方法
=> [4, 5, 6, 7, 8, 9]
>> a[4..-2]      #小技巧
=> [4, 5, 6, 7, 8]

>> (1..9).each do |f|
?> print f*f
>> end
149162536496481>> (1..9).map {|i| i*i}    #将每个元素变换并返回map=> [1, 4, 9, 16, 25, 36, 49, 64, 81]>> (1..9).reduce {|i| i*i}  #将整个数组变换为一个值返回=> 1>> %w{das das das}    #%w将元素变换为字符串返回=> ["das", "das", "das"]

哈希和符号

>> user = {}      #初始化哈希
=> {}
>> user["one"] = "yz00"  
=> "yz00"
>> user["two"] = "yz01"
=> "yz01"

>> user["one"]    #获取哈希
=> "yz00"
>> user
=> {"one"=>"yz00", "two"=>"yz01"}

>> user = {"one" => "yz00","two" => "yz01"}     #也可以这样赋值
=> {"one"=>"yz00", "two"=>"yz01"}      #注意在逗号后面有一个空格,约定俗成的

可以把符号看成没有约束的字符串,所以可以写成下面的形式

>> user = {:one => "yz00", :two => "yz01"}    #不用初始化
=> {:one=>"yz00", :two=>"yz01"}

由于符号当作键用的多,1.9后这样定义

>> user = {one: "yz00", two: "yz01"}
=> {:one=>"yz00", :two=>"yz01"}

嵌套哈希

>> users[:user] = user=> {:one=>"yz00", :two=>"yz01"}>> users=> {:user=>{:one=>"yz00", :two=>"yz01"}}>> users[:user][:one]=> "yz00">> print (1..5).to_a[1, 2, 3, 4, 5]=> nil>> puts (1..5).to_a12345=> nil>> puts (1..5).to_a.inspect    #inspect方法输出数组的字面形式,输出对象时相当于P方法[1, 2, 3, 4, 5]=> nil>> p (1..5).to_a          [1, 2, 3, 4, 5]=> [1, 2, 3, 4, 5]
时间: 2024-11-16 18:51:17

ruby日记1的相关文章

小白日记15:kali渗透测试之弱点扫描-漏扫三招、漏洞管理、CVE、CVSS、NVD

发现漏洞 弱点发现方法: 1.基于端口服务扫描结果版本信息,比对其是否为最新版本,若不是则去其 官网查看其补丁列表,然后去逐个尝试,但是此法弊端很大,因为各种端口应用比较多,造成耗时大. 2.搜索已公开的漏洞数据库,但数量大. ##其中会有漏洞利用代码,如:https://www.exploit-db.com/ [kali集成] [email protected]:~# searchsploit tomcat -------------------------------------------

小白日记19:kali渗透测试之选择和修改EXP

EXP 目的:学会选择和修改网上公开的漏洞利用代码[EXP(python\perl\ruby\c\c++....)] 方法: 1.Exploit-db[kali官方维护的漏洞利用代码库] 2.SecurityFocus[安全焦点:securityfocus.com(个别漏洞会有,可做后备查找)] 3.Searchsploit[kali上可下载安装] 注:需选择可信赖的EXP源[防止中别人的恶意代码,可用虚拟机先验证,再使用]尽量将EXP中的shellcode改成自己的 实例1[当拿到一个自己不熟

在 mac 上搭建 ruby 环境

一.安装系统需要的包 安装Xcode开发工具,它将帮你安装好 Unix 环境需要的开发包 打开 App Store,搜索 Xcode,第一个就是,对了,有4个多G,网速如果不大好,就请先厕所哭会儿吧,慢慢等~ 二.安装 RVM RVM 是什么?不懂?没关系,你都在看这篇文章了,说了你也不懂,如果你懂也没必要看这个,日后你慢慢且懂~ 开始进入主题: (1)打开 mac 的终端,输入一串命令:curl -L https://get.rvm.io | bash -s stable (2)载入 RVM

HTML5 &lt;ruby&gt;注释标签

今天学了HTML5的ruby标签,觉得挺有趣的,来记录一下. ruby可以作注释标签,内部有rp和rt标签. <ruby>  标记定义注释或音标. <rp>    告诉那些不支持ruby元素的浏览器该如何显示. <rt>      标记定义对ruby注释的内容文本. 学完这个标签的第一反应就是,我有方法给那些不会读的日语单词做假名注释啦!!! 代码如下,来给一句日语做个小注释: <!DOCTYPE html> <html lang="en&q

RVM(ruby version manage)安装指南

一.安装需要3步gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \curl -sSL https://get.rvm.io | bash -s stable 退出后,重新登陆即可. RVM的基本命令: 列出已知的 Ruby 版本 rvm list known 安装一个 Ruby 版本 rvm install 2.3.3 --disable-binary 参考:htt

Ruby环境搭建——Windows

下载 rubyinstaller. 链接:http://rubyinstaller.org/downloads/.直接运行安装 注意需要在环境变量中添加: ..\ruby\bin 测试命令:ruby -v 安装rubygems. 链接:https://rubygems.org/ 自动:gem update --system 手动:cd C:\Downloads\rubygems-2.6.7 ; ruby setup.rb 安装gem包. gem install net-scp gem insta

小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描

端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相信] 一个端口就是一个潜在的通信通道,也就是一个入侵通道.对目标计算机进行端口扫描,能得到许多有用的信息.进行扫描的方法很多,可以是手工进行扫描,也可以用端口扫描软件进行扫描.在手工进行扫描时,需要熟悉各种命令.对命令执行后的输出进行分析.用扫描软件进行扫描时,许多扫描器软件都有分析数据的功能.通过

小白日记8:kali渗透测试之主动信息收集(二)三层发现:ping、traceroute、scapy、nmap、fping、Hping

三层发现 三层协议有:IP以及ICMP协议(internet管理协议).icmp的作用是用来实现intenet管理的,进行路径的发现,网路通信情况,或者目标主机的状态:在三层发现中主要使用icmp协议,arp协议属于二层协议,它是基于广播的,所以不可路由.而ICMP协议是可以路由的,理论上可以使用icmp协议发现全球的ip,如果没有边界防火墙(禁止icmp的探测包)进行过滤的话,对目标主机进行扫描,则会收到相应的响应,从而进行捕捉[有边界防火墙的现象比较普遍],但是三层发现的扫描速度也较二层要慢

教你ruby快速入门的方法

在学习新的编程语言的时候,我们一定要弄清楚一下几个问题: 语言的类型模型是什么? 强类型/弱类型,静态类型/动态类型 类型模型会改变问题的处理方式,控制语言的运行方式 语言的编程范型是什么? 面向对象.函数式.过程式等等 怎样和语言交互? 编译.解释 语言的判断结构(decision construct)和核心数据结构是什么? 哪些核心特性让这门语言与众不同? 因为每门编程语言都有自己的一套惯用方法,各有所长,各有缩短,通过学习不同的编程语言,你会明白,哪门语言最适宜解决自己当下关注的问题.下面