<% 'Option Explicit ' RSSReader / CQ 1.00 2008/04/23 ' 1.01 2008/05/26 add USE_APPVAR ' < %= RSSReader(url, max, fmt, ctl) % > ←このように使う ' url : 取得したいRSSファイルのあるURL URLでないといけない ' max : 取得したい件数の最大値 (-1で無制限) ' fmt : 出力フォーマット ' ctl : 出力コントロール(絞込み/並び順) ' ' fmt: {title:100}
とか書く ' {name[:fmt]} name -> title, link, date, summary, num ' fmt: 文字列:先頭からn文字 ' 日付のときのみ、 YYYY MM DD HH NN SS が使える {date:MM-DD}とか ' 省略するとデフォルト有。VBなので"は重ねる("")こと ' ' ctl: ' 先頭1文字*で、日付順ソート ' それ以降は、タグの絞込条件 ' 無印は無条件に必要 ' +で追加条件 ' -で除外条件 ' カンマ区切りとする ' あと見つからない場合の文字列とか? const CACHEFOLDER = "d:\rsscache\" ' キャッシュ用フォルダ const CACHETTL = 55 ' minutes const CACHEASPTTL = 60 const USE_APPVAR = true ' Application変数を利用するかしないかtrue/false Const TYPE_UNKNOWN = 0 Const TYPE_RDF = 1 ' rss0.9/1.0 Const TYPE_RSS = 2 ' rss0.91/0.92/2.0 Const TYPE_ATOM = 3 ' Atom Response.CacheControl = "no-cache" Response.AddHeader "Pragma", "no-cache" Response.Expires = -1 Response.Buffer = false Dim internal_RSSErrorFlag internal_RSSErrorFlag = false Function HTMLEncode(s) HTMLEncode = Server.HTMLEncode(s) End Function ' bubble sort ' 文字列、降順、先頭の19文字に日付時刻データとする Sub ArraySort(ByRef a) Dim i, j, tmp, CMPLEN ',ef CMPLEN = 19 ' Len("yyyy/mm/dd HH:NN:SS") For i = 0 To UBound(a) -1 ' Wscript.Echo i & "=" & a(i) ' ef = true For j = i + 1 To UBound(a) If Left(a(i), CMPLEN) < Left(a(j), CMPLEN) Then ' 入れ替える tmp = a(i) a(i) = a(j) a(j) = tmp ' ef = false End If Next ' If ef = true Then Exit For ' 入れ替えなしなら終了 Next End Sub ' md5関連 Function sl(ByVal x, ByVal n) ' 左シフト If n = 0 Then sl = x Else Dim k k = CLng(2 ^ (32 - n - 1)) Dim d d = x And (k - 1) Dim c c = d * CLng(2 ^ n) If x And k Then c = c Or &H80000000 End If sl = c End If End Function Function sr(ByVal x, ByVal n) ' 右シフト(算術(>>)ではなく論理(>>>)シフトに相当) If n = 0 Then sr = x Else Dim y y = x And &H7FFFFFFF Dim z If n = 32 - 1 Then z = 0 Else z = y \ CLng(2 ^ n) End If If y <> x Then z = z Or CLng(2 ^ (32 - n - 1)) End If sr = z End If End Function Function add(ByVal a, ByVal b) ' オーバフローを無視して 32 ビットの加算をおこなう。 If a >= 0 And b <= 0 Then add = a + b ElseIf a <= 0 And b >= 0 Then add = a + b Else Dim x x = a And &H3FFFFFFF Dim y y = b And &H3FFFFFFF Dim z z = x + y Dim f f = 0 If z And &H40000000 Then f = f + 1 End If z = z And &H3FFFFFFF If a And &H40000000 Then f = f + 1 End If If a And &H80000000 Then f = f + 2 End If If b And &H40000000 Then f = f + 1 End If If b And &H80000000 Then f = f + 2 End If If f And 1 Then z = z Or &H40000000 End If If f And 2 Then z = z Or &H80000000 End If add = z End If End Function Function addCur(ByVal a, ByVal b) ' オーバフローを無視して 32 ビットの加算をおこなう。 Dim c c = CCur(a) + CCur(b) If c > &H7FFFFFFF Then c = c - CCur(2 ^ 32) ElseIf c < &H80000000 Then c = c + CCur(2 ^ 32) End If addCur = CLng(c) End Function Function ba(ByVal s) ' 文字列を文字の配列に変換する。 Dim r If Len(s) = 0 Then ' 要素数が 0 個の配列のみ特別扱いする。 r = Array() Else ReDim a(Len(s) - 1) Dim i For i = 0 To Len(s) - 1 a(i) = Asc(Mid(s, i + 1, 1)) Next r = a End If ba = r End Function Function FX(ByVal x, ByVal y, ByVal z) FX = (x And y) Or ((Not x) And z) End Function Function GX(ByVal x, ByVal y, ByVal z) GX = (x And z) Or (y And (Not z)) End Function Function HX(ByVal x, ByVal y, ByVal z) HX = x Xor y Xor z End Function Function IX(ByVal x, ByVal y, ByVal z) IX = y Xor (x Or (Not z)) End Function Function ROTATE_LEFT(ByVal x, ByVal n) ROTATE_LEFT = sl(x, n) Or sr(x, 32 - n) End Function Sub FF(ByRef a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac) a = add(add(add(a, FX(b, c, d)), x), ac) a = ROTATE_LEFT(a, s) a = add(a, b) End Sub Sub GG(ByRef a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac) a = add(add(add(a, GX(b, c, d)), x), ac) a = ROTATE_LEFT(a, s) a = add(a, b) End Sub Sub HH(ByRef a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac) a = add(add(add(a, HX(b, c, d)), x), ac) a = ROTATE_LEFT(a, s) a = add(a, b) End Sub Sub II(ByRef a, ByVal b, ByVal c, ByVal d, ByVal x, ByVal s, ByVal ac) a = add(add(add(a, IX(b, c, d)), x), ac) a = ROTATE_LEFT(a, s) a = add(a, b) End Sub Sub MD5Init(ByRef state, ByRef count, ByRef buffer) count(0) = 0 count(1) = 0 state(0) = &H67452301 state(1) = &HEFCDAB89 state(2) = &H98BADCFE state(3) = &H10325476 End Sub Sub MD5Update(ByRef state, ByRef count, ByRef buffer, ByRef inputx, ByVal inputLen) Dim i Dim index Dim partLen index = sr(count(0), 3) And &H3F count(0) = add(count(0), sl(inputLen, 3)) If count(0) < sl(inputLen, 3) Then count(1) = add(count(1), 1) End If count(1) = add(count(1), sr(inputLen, 29)) partLen = 64 - index If inputLen >= partLen Then Call MD5_memcpy(buffer, index, inputx, 0, partLen) Call MD5Transform(state, buffer, 0) For i = partLen To inputLen - 63 - 1 Step 64 Call MD5Transform(state, inputx, i) Next index = 0 Else i = 0 End If Call MD5_memcpy(buffer, index, inputx, i, inputLen - i) End Sub Sub MD5Final(ByRef digest, ByRef state, ByRef count, ByRef buffer) Dim bits(7) Dim index Dim padLen Call Encode(bits, count, 8) index = sr(count(0), 3) And &H3F If index < 56 Then padLen = 56 - index Else padLen = 120 - index End If Dim PADDING PADDING = Array( _ &H80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 _ ) Call MD5Update(state, count, buffer, PADDING, padLen) Call MD5Update(state, count, buffer, bits, 8) Call Encode(digest, state, 16) Dim i For i = 0 To UBound(state) state(i) = 0 Next For i = 0 To UBound(count) count(i) = 0 Next For i = 0 To UBound(buffer) buffer(i) = 0 Next End Sub Sub MD5Transform(ByRef state, ByRef block, ByVal offset) Dim a a = state(0) Dim b b = state(1) Dim c c = state(2) Dim d d = state(3) Dim x(15) Call Decode(x, block, offset, 64) ' Round 1 Call FF(a, b, c, d, x( 0), 7, &HD76AA478) ' 1 S11 Call FF(d, a, b, c, x( 1), 12, &HE8C7B756) ' 2 S12 Call FF(c, d, a, b, x( 2), 17, &H242070DB) ' 3 S13 Call FF(b, c, d, a, x( 3), 22, &HC1BDCEEE) ' 4 S14 Call FF(a, b, c, d, x( 4), 7, &HF57C0FAF) ' 5 S11 Call FF(d, a, b, c, x( 5), 12, &H4787C62A) ' 6 S12 Call FF(c, d, a, b, x( 6), 17, &HA8304613) ' 7 S13 Call FF(b, c, d, a, x( 7), 22, &HFD469501) ' 8 S14 Call FF(a, b, c, d, x( 8), 7, &H698098D8) ' 9 S11 Call FF(d, a, b, c, x( 9), 12, &H8B44F7AF) ' 10 S12 Call FF(c, d, a, b, x(10), 17, &HFFFF5BB1) ' 11 S13 Call FF(b, c, d, a, x(11), 22, &H895CD7BE) ' 12 S14 Call FF(a, b, c, d, x(12), 7, &H6B901122) ' 13 S11 Call FF(d, a, b, c, x(13), 12, &HFD987193) ' 14 S12 Call FF(c, d, a, b, x(14), 17, &HA679438E) ' 15 S13 Call FF(b, c, d, a, x(15), 22, &H49B40821) ' 16 S14 ' Round 2 Call GG(a, b, c, d, x( 1), 5, &HF61E2562) ' 17 S21 Call GG(d, a, b, c, x( 6), 9, &HC040B340) ' 18 S22 Call GG(c, d, a, b, x(11), 14, &H265E5A51) ' 19 S23 Call GG(b, c, d, a, x( 0), 20, &HE9B6C7AA) ' 20 S24 Call GG(a, b, c, d, x( 5), 5, &HD62F105D) ' 21 S21 Call GG(d, a, b, c, x(10), 9, &H2441453) ' 22 S22 Call GG(c, d, a, b, x(15), 14, &HD8A1E681) ' 23 S23 Call GG(b, c, d, a, x( 4), 20, &HE7D3FBC8) ' 24 S24 Call GG(a, b, c, d, x( 9), 5, &H21E1CDE6) ' 25 S21 Call GG(d, a, b, c, x(14), 9, &HC33707D6) ' 26 S22 Call GG(c, d, a, b, x( 3), 14, &HF4D50D87) ' 27 S23 Call GG(b, c, d, a, x( 8), 20, &H455A14ED) ' 28 S24 Call GG(a, b, c, d, x(13), 5, &HA9E3E905) ' 29 S21 Call GG(d, a, b, c, x( 2), 9, &HFCEFA3F8) ' 30 S22 Call GG(c, d, a, b, x( 7), 14, &H676F02D9) ' 31 S23 Call GG(b, c, d, a, x(12), 20, &H8D2A4C8A) ' 32 S24 ' Round 3 Call HH(a, b, c, d, x( 5), 4, &HFFFA3942) ' 33 S31 Call HH(d, a, b, c, x( 8), 11, &H8771F681) ' 34 S32 Call HH(c, d, a, b, x(11), 16, &H6D9D6122) ' 35 S33 Call HH(b, c, d, a, x(14), 23, &HFDE5380C) ' 36 S34 Call HH(a, b, c, d, x( 1), 4, &HA4BEEA44) ' 37 S31 Call HH(d, a, b, c, x( 4), 11, &H4BDECFA9) ' 38 S32 Call HH(c, d, a, b, x( 7), 16, &HF6BB4B60) ' 39 S33 Call HH(b, c, d, a, x(10), 23, &HBEBFBC70) ' 40 S34 Call HH(a, b, c, d, x(13), 4, &H289B7EC6) ' 41 S31 Call HH(d, a, b, c, x( 0), 11, &HEAA127FA) ' 42 S32 Call HH(c, d, a, b, x( 3), 16, &HD4EF3085) ' 43 S33 Call HH(b, c, d, a, x( 6), 23, &H4881D05) ' 44 S34 Call HH(a, b, c, d, x( 9), 4, &HD9D4D039) ' 45 S31 Call HH(d, a, b, c, x(12), 11, &HE6DB99E5) ' 46 S32 Call HH(c, d, a, b, x(15), 16, &H1FA27CF8) ' 47 S33 Call HH(b, c, d, a, x( 2), 23, &HC4AC5665) ' 48 S34 ' Round 4 Call II(a, b, c, d, x( 0), 6, &HF4292244) ' 49 S41 Call II(d, a, b, c, x( 7), 10, &H432AFF97) ' 50 S42 Call II(c, d, a, b, x(14), 15, &HAB9423A7) ' 51 S43 Call II(b, c, d, a, x( 5), 21, &HFC93A039) ' 52 S44 Call II(a, b, c, d, x(12), 6, &H655B59C3) ' 53 S41 Call II(d, a, b, c, x( 3), 10, &H8F0CCC92) ' 54 S42 Call II(c, d, a, b, x(10), 15, &HFFEFF47D) ' 55 S43 Call II(b, c, d, a, x( 1), 21, &H85845DD1) ' 56 S44 Call II(a, b, c, d, x( 8), 6, &H6FA87E4F) ' 57 S41 Call II(d, a, b, c, x(15), 10, &HFE2CE6E0) ' 58 S42 Call II(c, d, a, b, x( 6), 15, &HA3014314) ' 59 S43 Call II(b, c, d, a, x(13), 21, &H4E0811A1) ' 60 S44 Call II(a, b, c, d, x( 4), 6, &HF7537E82) ' 61 S41 Call II(d, a, b, c, x(11), 10, &HBD3AF235) ' 62 S42 Call II(c, d, a, b, x( 2), 15, &H2AD7D2BB) ' 63 S43 Call II(b, c, d, a, x( 9), 21, &HEB86D391) ' 64 S44 state(0) = add(state(0), a) state(1) = add(state(1), b) state(2) = add(state(2), c) state(3) = add(state(3), d) Dim i For i = 0 To UBound(x) x(i) = 0 Next End Sub Sub Encode(ByRef output, ByRef inputx, ByVal lenx) Dim i i = 0 Dim j j = 0 Do While j < lenx output(j) = inputx(i) And &HFF output(j + 1) = sr(inputx(i), 8) And &HFF output(j + 2) = sr(inputx(i), 16) And &HFF output(j + 3) = sr(inputx(i), 24) And &HFF i = i + 1 j = j + 4 Loop End Sub Sub Decode(ByRef output, ByRef inputx, ByVal inputxOffset, ByVal lenx) Dim i i = 0 Dim j j = 0 Do While j < lenx Dim k k = j + inputxOffset output(i) = inputx(k) Or sl(inputx(k + 1), 8) Or sl(inputx(k + 2), 16) Or sl(inputx(k + 3), 24) i = i + 1 j = j + 4 Loop End Sub Sub MD5_memcpy(ByRef output, ByVal outputOffset, ByRef inputx, ByVal inputxOffset, ByVal lenx) Dim i For i = 0 To lenx - 1 output(i + outputOffset) = inputx(i + inputxOffset) Next End Sub 'Function main(ByVal argc, ByRef argv) ' Dim i ' If argc > 1 Then ' For i = 1 To argc - 1 ' If Mid(argv(i), 1, 2) = "-s" Then ' Call MDString(Mid(argv(i), 3)) ' ElseIf argv(i) = "-t" Then ' ' Call MDTimeTrial ' ElseIf argv(i) = "-x" Then ' Call MDTestSuite ' Else ' ' Call MDFile(argv(i)) ' End If ' Next ' Else ' ' Call MDFilter ' End If ' main = 0 'End Function Function MDString(ByVal stringx) Dim state(3) Dim count(1) Dim buffer(63) Dim digest(15) Dim lenx lenx = Len(stringx) Call MD5Init(state, count, buffer) Call MD5Update(state, count, buffer, ba(stringx), lenx) Call MD5Final(digest, state, count, buffer) Dim s s = MDPrint(digest) MDString = s End Function 'Sub MDTestSuite() ' Dim x ' Dim y ' Dim r ' r = "" ' ' x = "" ' y = MDString(x) ' r = r & x & ": " & y & vbNewLine ' ' x = "a" ' y = MDString(x) ' r = r & x & ": " & y & vbNewLine ' ' x = "abc" ' y = MDString(x) ' r = r & x & ": " & y & vbNewLine ' ' x = "message digest" ' y = MDString(x) ' r = r & x & ": " & y & vbNewLine ' ' x = "abcdefghijklmnopqrstuvwxyz" ' y = MDString(x) ' r = r & x & ": " & y & vbNewLine ' ' x = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" ' y = MDString(x) ' r = r & x & ": " & y & vbNewLine ' ' x = "12345678901234567890123456789012345678901234567890123456789012345678901234567890" ' y = MDString(x) ' r = r & x & ": " & y & vbNewLine ' ' Call MsgBox(r) 'End Sub Function MDPrint(ByRef digest) Dim s s = "" Dim i For i = 0 To 16 - 1 s = s & Right("00" & LCase(Hex(digest(i))), 2) Next MDPrint = s End Function ' Call main(2, Array("", "-x")) ' RSS1.0 ' rdf:RDF xmlns="http://purl.org/rss/1.0" ' channel ' title ' link ' description ' items ' rdf:Seq ' rdf:li + ' item + ' title ' link ' description ? ' dc:date (YYYY-MM-DDThh:mm) ' ' RSS0.9 ' rdf:RDF xmlns="http://my.netscape.com/rdf/simple/0.9/" ' channel ' title ' description ' link ' image ? ' title ' url ' link ' item + ' title ' link ' textinput ? ' title ' description ' name ' link 'RSS0.91/0.92 もう無い? というかぜんぜん別物 itemの階層が違う 'rss version="0.91" or version="0.92" ' channel ' title ' description ' link ' language ' item+ ' title ' link ' description ' rating? ' ... 'RSS2.0 'rss version="2.0" ' channel ' title,link,description,... ' item+ ' title ' description ' link ' pubDate ' category ' ' Atom 'feed xmlns="http://www.w3.org/2005/Atom ' title ' subtitle ' id ' link ' author ' name ' updated ' entry + ' title ' link ' id ' author ' published ' updated ' category ' summary ' content ' 時刻の扱いRFCなど 'W3CDTF ' YYYY ' YYYY-MM ' YYYY-MM-DD ' YYYY-MM-DDThh:mmTZD ' YYYY-MM-DDThh:mm:ssTZD ' YYYY-MM-DDThh:mm:ss.sTZD TZD = "+09:00" とか "Z"とか '基本的にこれだが、RSS2.0のpubDateのみRFC822の日付 '5.1 SYNTAX ' date-time = [ day "," ] date time ; dd mm yy ' ; hh:mm:ss zzz ' day = "Mon" / "Tue" / "Wed" / "Thu" ' / "Fri" / "Sat" / "Sun" ' date = 1*2DIGIT month 2DIGIT ; day month year ' ; e.g. 20 Jun 82 ' month = "Jan" / "Feb" / "Mar" / "Apr" ' / "May" / "Jun" / "Jul" / "Aug" ' / "Sep" / "Oct" / "Nov" / "Dec" ' time = hour zone ; ANSI and Military ' hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT] ' ; 00:00:00 - 23:59:59 ' zone = "UT" / "GMT" ; Universal Time ' ; North American : UT ' / "EST" / "EDT" ; Eastern: - 5/ - 4 ' / "CST" / "CDT" ; Central: - 6/ - 5 ' / "MST" / "MDT" ; Mountain: - 7/ - 6 ' / "PST" / "PDT" ; Pacific: - 8/ - 7 ' / 1ALPHA ; Military: Z = UT; ' ; A:-1; (J not used) ' ; M:-12; N:+1; Y:+12 ' / ( ("+" / "-") 4DIGIT ) ; Local differential ' ; hours+min. (HHMM) ' ' 2バイト文字1文字をを2文字としてカウントするLeft関数 ' なんとなく正確ではないが桁そろえをしたいので Function LeftJ(s, n) Dim count Dim c, l, i l = 0 If(Len(s)*2 < n) Then LeftJ = s Exit Function End If For i = 1 to Len(s) c = Asc(Mid(s, i, 1)) If (c >= 0) and (c <= 255) Then l = l + 1 Else l = l + 2 End If If l >= n Then LeftJ = Left(s, i) Exit Function End If Next LeftJ = s End Function ' HTMLからタグを除外する 改行も消す 連続するスペースも消す Function GetTextOnly(s) Dim r, re r = GetTextFromHTML(s) r = Replace(r, vbCrlf, " ") r = Replace(r, vbCr, " ") r = Replace(r, vblf, " ") Set re = New RegExp re.Pattern = "([\s ]+)" re.IgnoreCase = true re.Global = true r = re.Replace(r, " ") GetTextOnly = r End Function ' ------------------------------------------------------------------------- ' HTML文から、タグを取り除いたテキスト部分を取得する Function GetTextFromHTML(ss) Dim s Dim i, p Dim c, code Dim result Dim InTag, InComment i = 1 ' i は 文字位置 s = ss InTag = false ' タグ内フラグ InComment = false ' コメント内フラグ ' 結果文字列 result = "" ' NULL の時の対応 If(Len(s) = 0) Then GetTextFromHTML = "" Exit Function End If ' 1文字ずつ処理 Do While i <= Len(s) c = mid(s, i, 1) i = i + 1 code = asc(c) If InComment Then If(c = "-") Then If(mid(s, i, 3) = "-->") Then InComment = false i = i + 2 End If End If ElseIf InTag Then If(c = ">") Then InTag = false End If Else If(c = "<") Then If(mid(s, i , 4) = "" & s Else Application.Lock Application.Contents.Remove(datename) Application.Contents.Remove(dataname) Application.Unlock s = "" & s End If 'Application.Contents("dummy") = 0 'Application.Unlock Call DeleteOldItems(allpara) RSSReader = s Exit Function End If Application.Lock dt1 = Application.Contents(datename) If (IsDate(dt1) = false) or (DateAdd("n", CACHEASPTTL, dt1) < Now) Then Application.Contents(datename) = Now Application.Unlock ' cache timed out s = InternalRSSReader2(url, max, fmt, ctl) If internal_RSSErrorFlag = false Then Application.Lock Application.Contents(datename) = Now Application.Contents(dataname) = s Application.Unlock s = "" & s Else Application.Lock Application.Contents.Remove(datename) Application.Contents.Remove(dataname) Application.Unlock s = "" & s End If ' RSSReader = s ' Exit Function ' s = "" & s ' 古くて使わなくなった値があれば削除する Call DeleteOldItems(allpara) Else s = "" & Application.Contents(dataname) Application.Unlock End If RSSReader = s End Function 'url = "http://www.eleki-jack.com/news/index.xml" 'url = url & "," & "http://www.eleki-jack.com/KitsandKids2/index.xml" 'WScript.Echo RSSReader(url, 10, "{num}.{title:50.}
{summary:100.}
", "LEDファン,GPS") 'WScript.Echo RSSReader2(url, -1, "{date:MM-DD HH:NN}
{title:50.}
{summary:50.}
", "*LEDファン,ニュース") 'WScript.Echo RSSReader2(url, -1, "{date:MM-DD HH:NN}
{title}
{summary:100.}
", "ニュース") 'WScript.Quit %> CQ ham radio - アマチュア無線の専門誌

CQ ham radio 7MHz Activity Award

ブログ こちら編集部

<%= RSSReader("http://www.cqhamradio.jp/index.xml", 5, "{date:MM/DD} {title:24.}
", "") %>

CQ ham radio2月号表紙

海外アワード申請書EXCEL版

海外アワード申請書PDF版

2月号
1月19日発売
特別号定価930円

別冊付録
〜アワード・ハント/コンテスト/移動地チェック・ノート〜
2011年版
DXCC/JCC/JCGリスト

別冊付録

ご購入はこちら

 冬晴れのとある日,近くの河川敷に移動.アンテナには,今話題となっている第一電波工業製のスクリュードライバー・アンテナ,SD330をチョイス.3.5〜30MHzを1本のアンテナでカバーする優れものです.マッチングは車内に引き込んだ付属スイッチでリモート操作します.基台には同社のK5000.強力磁石でがっちりルーフ上に固定できます.モービルHFマルチバンド運用がいよいよ快適になりそうです.


CQ バックナンバー
DX レポート
関連官庁,団体リンク
ハムショップ情報
メーカー・リンク
DXCCエンティティリスト
JCC/JCGリスト
アマチュア無線用語集
壁紙
別冊CQ ham radio
トランジスタ技術
エレキジャック
RFワールド
Interface
ディジタル・デザイン・テクノロジ
メルマガ登録はこちら
エレクトロニクスセミナ

今月の特集

〜ひとつ先の楽しさを見つけませんか〜
アワードで広がるアマチュア無線

〜アマチュア無線を長続きさせるために〜
アワードを楽しもう JR1DTN 佐藤 哲

〜アワードに魅せられたハムたち〜
それぞれのアワード・ハントの楽しみ方
協力:ジャパン・アワードハンターズ・グループ

アワード・ハントには人との出会いがある JG5DHX 小野 省己

これからもさまざまなアワードに挑戦していきたい JI7RBP 黄川田 圭一

アマチュア無線を長続きできた JA0CCR 滝沢 和昌

競い合いながら,ハムライフを大いに楽しみたい
JE8NHD 松崎 満州夫/JE8SHM 松崎 勝子

無線復活への火種はAJAアワードとの遭遇 JH7MGJ 中野 良弘

JAG創立30周年記念アワードのアワード・マネージャー JR4IKP 黒崎 百合子

浜松市全区賞や浜松城賞などのアワード・マネージャー JA2PFZ 冨永 厚平

〜アワード申請の便利なツール〜
ハムログの交信データを利用してHLAWDでQSLカード・リストを印刷する
JF1RWZ 岡村 潤一

〜初めての方でも申請できる書き方見本付き〜
海外アワードの楽しみ方 JR1DTN 佐藤 哲

〜楽しみやすく,親しみやすく〜
こんなに変わったJARL発行アワード JR1DTN 佐藤 哲

〜素朴な疑問にお答えします〜
アワード・ハンティングQ&A JR1DTN 佐藤 哲

〜アプローチは人それぞれ〜
2011年本誌発行アワードの楽しみ方
私ならこう楽しむDot & Dashアワード JH5GEN 越智 省二
CQ ham radio CW Activity AwardをCWデビューのきっかけに!
JI1JRE 武藤 初美

カラーで見たいこの1枚
ズームインCQ

別冊付録
〜アワード・ハント/コンテスト/移動地チェック・ノート〜
2011年版 DXCC/JCC/JCGリスト

ページトップへ

ビギナーハムコーナー

なるほど!ナットク! アマチュア無線
第13回 群馬県支部ハムの集いに行ってきました!! JE1MQF 江口 諒

CQ CQ! ハムハムちゃん
Vol.2 なるほど!ナットク!アマチュア無線のJE1MQF 江口 諒さん
YUKINOTA(JE1RZB 会沢 友紀)

ページトップへ

最新情報・コラム

沖縄アマチュア無線50年史 JR6AH 渡口 眞邦

堀江謙一さん56年の功績 編集部

ユーザー・レポート
アルインコ DX-SR8J/M(前編) JJ1VKL 原岡 充

サガ電子工業 SUPER ROD-2 JJ1JWE 神戸 稔

第一電波工業 SD330 JE1WYC 池田 信彦

FTM-350のバージョンアップをやってみよう JS1CYI 吉沢 浩史

フランス領ポリネシアからの運用レポート JI1JKW 斉藤 裕之

アルゼンチンのハムを訪ねて OE1ZKC 田中 純一

2010年のジュニアハムたち JI1TJJ 石谷 優行

各地からのイベント・レポート

規正局とアマチュア・ガイダンス局が合同運用を実施 編集部

絶海の孤島 マッコーリーからQRV VK0KEV ケヴィン・ホワイト

IOTAエクスペディション・レポート DL5ME Mario Borstel

アメリカのARRL訪問記 JM3EHG 堀内 洋孝

インドのハムフェスティバルで,VEを経験 AB2ST/JF1TEU 河辺 吉行

ハムは世界に友情の輪を広げる趣味 W3JK Ken Garg

ハンドメイドで建てたログハウス・シャック JH0OZR 吉國 明夫

6大陸制覇!FNL-WAC贈呈! JK1FNL 小林 直行

ラジオゾンデが空を飛ぶ日 衛星研究・開発チーム
TASITS JE1HUZ 小泉 夢月/大前 有也

新製品情報

ページトップへ
テクニカルセクション

ダウン・コンバージョン方式のHFトランシーバは買いか?
JA1RPK 川名 幸男

Weather Station「ADS-WS1」を使った気象観測(前編)
JR7OVC 小林 貴久生

手作り電池で遊ぼう 11円電池,101円電池は使えるか?
JA7RKB 十文字 正憲

160mバンド用スーパー・ラド・アンテナをコンテストで実践使用(前編)
JE1SPY 芦川 栄晃

7/10MHz 逆Vアンテナ JA8BKI 村上 芳明

真空管とOPアンプを使ったハイブリッド・マイク・アンプの製作
JA1BBP 早坂 正義

市販コイルを使いこなす! バンドパス・フィルタの設計と製作
JA1EJL 盛上 栄治

7MHz周波数可変幅−0.75%実用 VXOユニットの製作
JA3DEW 清水 愛典

新デバイスによるPSN方式SSB 5 PSN考の巻 JA1BRS 須賀川 進

ページトップへ
連載

Atsuさんのモールス通信ステップアップ
第2回 ワッチ,ワッチ,ワッチ! JE1TRV 谷口 敦郎

無線・もっと楽しく!
今月のお題 アイボールQSO JL1EEE 井上 博

自伝的アマチュア無線史 JA1AEA 鈴木 肇

小説「ハムと少年」 第六回 棕澤 昭二

アマチュア無線で「OpenOffice.org」を使おう
第7回 電子申請の添付書類を作ろう(前編) 7J3AOZ 白原 浩志

新連載 ハムのためのtwitter入門
第1回 Twitterへの登録 JA5FNX 田村文史郎

ハムが楽しむ電子工作の時間
第2実験室 キットを組み立ててはんだ付けになれよう JM3WUD 光永 法明

ハムの日曜ハンドメイド講座
第14回 1MHz〜30MHz対応 簡易型アンテナ・アナライザの製作(前編)
JH5MNL 田中 宏

ページトップへ
DX WORLD

近着QSL紹介 まとめ:JA1HGY 間下 尚彦

DX News JK1OPL 小野 彰彦

QSL Information 7K4QOK 中村 肇

DX'erのための近着QSL情報 JI1CYX 太田 伸一

DX Digest JA1ADN 井原 昇

デジタルモードDXing JR1BAS 松谷 福丸 7L4IOU 出島 久己

読者からのDXレポート

ページトップへ
インフォメーション

アワード・ハンティング
CQハムラジオ アワードチーム

コンテスト規約
海外:JE1SPY 芦川 栄晃 7L4IOU 出島 久己 
国内:JK2XXK 戸根 伸剛

CQ情報室

アマチュア無線技士 国家試験案内

アマチュア無線技士 養成課程講習会案内

ページトップへ
マンスリーレポート

ARDF はじめの1TX JP3EVM 植木 等

About VHF JA1AN 原 昌三

ワールド・ハムラジオ JE1HYR 井端 一雅

新・移動運用セミナー JG1KTC 高尾 義則

記念局運用情報 編集

D-STAR Information 7L1FFN/2 磯 直行

VoIPでアマチュア無線 JS1CYI 吉沢 浩史

コンテスト JE1SPY 芦川 栄晃

マイクロウェーブワールド JF1TPR 熊野谿 寛

50MHz JL3IQE 西野 康則

V/UHF帯を楽しもう JA1NUW 杵渕 朝彦

EME(Earth-Moon-Earth) JH1KRC 渡辺 美千明

衛星通信情報 JN1GKZ 新井 雅裕

今月の電波伝搬予報 編集部

ページトップへ
読者の広場

ローカルトピックス
ハム交換室
原稿募集のお知らせ
ローカルトピックス/ハム交換室 投稿用紙
読者の声
ハム・クイズ
次号のお知らせ/編集部から

ページトップへ
日本アマチュア無線連盟編集のページ

FROM J.A.R.L.(JARL情報)