<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on csegura</title><link>http://blog.romheat.net/posts/</link><description>Recent content in Posts on csegura</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sun, 25 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://blog.romheat.net/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Changing the SGI Octane’s Light-Bar LEDs</title><link>http://blog.romheat.net/posts/2026/26_10_25_changing_the_sgi_octanes_light_bar_leds/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2026/26_10_25_changing_the_sgi_octanes_light_bar_leds/</guid><description>&lt;h2 id="a-small-change-to-an-sgi-workstation">A small change to an SGI workstation&lt;/h2>
&lt;p>I changed the indicator LEDs in my SGI Octane’s light bar. I chose blue LEDs and added two resistors to keep their current within a safe range.&lt;/p>
&lt;p>The light bar is a narrow assembly in the front of the case. Its lights make the computer’s status visible from the outside. I wanted to replace the dead lights and give them a blue glow.&lt;/p></description></item><item><title>NorthStar Advantage Restoration Part 1</title><link>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_1_first_look_inside/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_1_first_look_inside/</guid><description>&lt;h2 id="a-restoration-that-took-more-than-a-year">A restoration that took more than a year&lt;/h2>
&lt;p>I bought this NorthStar Advantage on Wallapop in 2024. The seller told me that the keyboard had a fault. But at power-on, the computer still displayed a message on the screen. As always trust in the seller’s words, was an act of faith.&lt;/p>
&lt;p>Indeed, buying vintage computers is always a bit of a gamble but be prepared for surprises when dealing with vintage hardware.&lt;/p></description></item><item><title>NorthStar Advantage Restoration Part 2</title><link>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_2/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_2/</guid><description>&lt;h2 id="looking-more-closely-at-the-drives">Looking more closely at the drives&lt;/h2>
&lt;p>This continues &lt;a href="http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_1_first_look_inside/">NorthStar Advantage Restoration Part 1&lt;/a>, with a closer look at the drive hardware and how floppy disks mark sectors.&lt;/p>
&lt;p>Many computers from the late 1970s and early 1980s used 5¼-inch floppy drives. The Tandon TM100-2A is one example. These drives can become difficult to use as they age. Their radial alignment—the position of the read/write head across the disk’s tracks—can shift. If it moves far enough, the drive may not read or write disks reliably.&lt;/p></description></item><item><title>NorthStar Advantage Restoration Part 3</title><link>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_3/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_3/</guid><description>&lt;p>This continues &lt;a href="http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_2/">NorthStar Advantage Restoration Part 2&lt;/a>. This time, I focus on replacing the keyboard’s foam pads.&lt;/p>
&lt;p>I had to wait three months for the replacement foam-and-foil pads to arrive. The first package was lost in transit, so I had to reorder them, which added to the delay.&lt;/p>
&lt;p>Once they were in hand, I could proceed with the restoration work on the keyboard.&lt;/p>
&lt;h2 id="the-replacement-pads">The replacement pads&lt;/h2>
&lt;p>There are not many places that sell these specific foam-and-foil pads, so finding a reliable source is important.&lt;/p></description></item><item><title>NorthStar Advantage Restoration Part 4</title><link>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_4/</link><pubDate>Sun, 25 Oct 2026 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_4/</guid><description>&lt;p>This continues &lt;a href="http://blog.romheat.net/posts/2026/26_10_25_northstar_advantage_restoration_part_3/">NorthStar Advantage Restoration Part 3&lt;/a>. This time, I am making 5¼-inch drive cases and fitting Gotek replacements.&lt;/p>
&lt;h2 id="making-a-case-for-the-drive-bays">Making a case for the drive bays&lt;/h2>
&lt;p>The NorthStar Advantage has two drive bays, and I want to use them with a Gotek floppy-drive emulator. A Gotek is a device that can stand in for a floppy disk drive. It uses a USB flash drive to provide disk images instead of physical floppy disks using a USB stick.&lt;/p></description></item><item><title>Qume Terminal</title><link>http://blog.romheat.net/posts/2026/26_03_28_qume_terminal/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2026/26_03_28_qume_terminal/</guid><description>&lt;h1 id="bringing-a-qvt-terminal-to-life-on-linux-over-usb-serial">Bringing a QVT terminal to life on Linux over USB serial&lt;/h1>
&lt;p>Vintage serial terminals are simple when everything matches, and maddening when one setting is off by a single bit.&lt;/p>
&lt;p>Recently, I got a Qume QVT-119 Plus terminal working as a serial console on Linux. The terminal is connected to a Raspberry Pi via a USB-to-serial adapter, and the Pi is running &lt;code>agetty&lt;/code> to present a login prompt on the terminal.&lt;/p></description></item><item><title>IRIX Services</title><link>http://blog.romheat.net/posts/2025/25_06_21_irix_play/</link><pubDate>Sat, 21 Jun 2025 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2025/25_06_21_irix_play/</guid><description>&lt;p>Recently the hard disk of my SGI O2 has failed, and I have been trying to recover the data from it. A long history of trying to recover the data, but finally I have been able to recover it. In the next days I have to explain how to use reanimatot to do a fresh install of IRIX.&lt;/p>
&lt;p>Today I&amp;rsquo;m triying to recompile Vim 8.1 as I had before. While the system is working, I&amp;rsquo;m using telnet to connect to the O2 and run the commands. I want to enable SSH so I have been exploring the system services.&lt;/p></description></item><item><title>SGI Reanimator</title><link>http://blog.romheat.net/posts/2025/25_06_08_reanimator/</link><pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2025/25_06_08_reanimator/</guid><description>&lt;p>SGI reanimator is a tool for restoring and managing SGI IRIX systems. It provides all necessary tools to install IRIX. (bootp, tftd end the CD images, yeras ago I did it tio install linux on a sun sparcstation ultra and it was a pain to get it working, so this is a great tool)&lt;/p>
&lt;p>&lt;a href="https://github.com/Linux-RISC/Reanimator" target="_blank">SGI Reanimator&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># hinv&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Autoload&lt;span style="color:#f92672">=&lt;/span>Yes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>console&lt;span style="color:#f92672">=&lt;/span>g
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>diskless&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dbaud&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">9600&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>volume&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">80&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sgilogo&lt;span style="color:#f92672">=&lt;/span>y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>autopower&lt;span style="color:#f92672">=&lt;/span>n
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>monitor&lt;span style="color:#f92672">=&lt;/span>h
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>netaddr&lt;span style="color:#f92672">=&lt;/span>192.168.1.105
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>eaddr&lt;span style="color:#f92672">=&lt;/span>08:00:69:0b:83:e1 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>boottune&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ConsoleOut&lt;span style="color:#f92672">=&lt;/span>video
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ConsoleIn&lt;span style="color:#f92672">=&lt;/span>keyboard
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>SystemPartition&lt;span style="color:#f92672">=&lt;/span>xio&lt;span style="color:#f92672">(&lt;/span>0&lt;span style="color:#f92672">)&lt;/span>pci&lt;span style="color:#f92672">(&lt;/span>15&lt;span style="color:#f92672">)&lt;/span>scsi&lt;span style="color:#f92672">(&lt;/span>0&lt;span style="color:#f92672">)&lt;/span>disk&lt;span style="color:#f92672">(&lt;/span>1&lt;span style="color:#f92672">)&lt;/span>rdisk&lt;span style="color:#f92672">(&lt;/span>0&lt;span style="color:#f92672">)&lt;/span>partition&lt;span style="color:#f92672">(&lt;/span>8&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>OSLoadPartition&lt;span style="color:#f92672">=&lt;/span>xio&lt;span style="color:#f92672">(&lt;/span>0&lt;span style="color:#f92672">)&lt;/span>pci&lt;span style="color:#f92672">(&lt;/span>15&lt;span style="color:#f92672">)&lt;/span>scsi&lt;span style="color:#f92672">(&lt;/span>0&lt;span style="color:#f92672">)&lt;/span>disk&lt;span style="color:#f92672">(&lt;/span>1&lt;span style="color:#f92672">)&lt;/span>rdisk&lt;span style="color:#f92672">(&lt;/span>0&lt;span style="color:#f92672">)&lt;/span>partition&lt;span style="color:#f92672">(&lt;/span>0&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>OSLoadFilename&lt;span style="color:#f92672">=&lt;/span>/unix 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>OSLoader&lt;span style="color:#f92672">=&lt;/span>sash
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gfx&lt;span style="color:#f92672">=&lt;/span>alive
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Kernname&lt;span style="color:#f92672">=&lt;/span>ide 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>I&amp;rsquo;ve modified my reanimator config to use the following settings to use it from my home network:&lt;/p></description></item><item><title>BBC Disk field notes</title><link>http://blog.romheat.net/posts/2025/25_05_03_bbc_disk/</link><pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2025/25_05_03_bbc_disk/</guid><description>&lt;p>I recentrly bought a broken BBC Diskdrive and a Watford DFS disk controller card, to try to repair it. The disk drive is a dual 5.25&amp;quot; disk drive, and the controller card is a Watford Electronics DFS (Dual Disk Filing System) card version 1.54T.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/zhAvJhK.png" alt="BBC Disk Drive">&lt;/p>
&lt;p>The unit comes with two different disk drives, a Mitsubishi MF503A and a Mitsubishi M4853-342MG. Each drive has a switch on the front panel to select between single-density (40 tracks) and double-density (80 tracks) operation.&lt;/p></description></item><item><title>Replacing the 5.25" Disk Drive</title><link>http://blog.romheat.net/posts/2025/25_03_29_replace_525_disk/</link><pubDate>Sat, 29 Mar 2025 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2025/25_03_29_replace_525_disk/</guid><description>&lt;h2 id="replacing-the-525-disk-drive">Replacing the 5.25&amp;quot; Disk Drive&lt;/h2>
&lt;p>I have a 5.25&amp;quot; disk drive that is not working properly. I have tried to clean the heads, but it is still not working. I have decided to replace it with a new one. I have found a new 5.25&amp;quot; disk drive on Wallapop (like ebay here in Spain), and I have bought it. Most of units are used, and untested, so I have been careful selecting the one I want to buy. Seller says that the disk drive is untested but was retired working. It&amp;rsquo;s no the first time I buy untested hardware, so the seller seems quite honest, and I trusted her.&lt;/p></description></item><item><title>Installing an SD Card Interface on the Apple IIc</title><link>http://blog.romheat.net/posts/2025/25_02_01_apple_iic_sdcard/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2025/25_02_01_apple_iic_sdcard/</guid><description>&lt;h2 id="installing-an-sd-card-interface-on-the-apple-iic">Installing an SD Card Interface on the Apple IIc&lt;/h2>
&lt;p>Finally I got the SP ][ SD interface for the Apple IIc. This interface allows you to connect an SD card to the Apple IIc and use it as a mass storage device. The installation is quite simple, and the results are amazing.&lt;/p>
&lt;p>It use an arduino nano to manage the SD card and the communication with the Apple IIc. The interface is connected to the disk II port of the Apple IIc, and it is powered by the Apple IIc itself. Great design!&lt;/p></description></item><item><title>C128 VICII video replacement</title><link>http://blog.romheat.net/posts/2025/25_01_21_c128_vic_replacement/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2025/25_01_21_c128_vic_replacement/</guid><description>&lt;h2 id="c128-vic-video-replacement">C128 VIC video replacement&lt;/h2>
&lt;p>After spent a lot of hours trying to fix the video signal on my C128, checking signals, replacing capacitors, replacing the RF modulator with the TSH7316 module etc.. and with the cues that each try gave me, I&amp;rsquo;ve decided to replace the VIC-II chip. The VIC-II chip is the video controller chip used in the C128.&lt;/p>
&lt;p>&lt;img src="https://imgur.com/sffkCkt.jpg" alt="VIC-II">&lt;/p>
&lt;p>&lt;a href="https://en.wikipedia.org/wiki/MOS_Technology_VIC-II" target="_blank">Documentation&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.c64-wiki.com/wiki/VIC-II" target="_blank">Documentation&lt;/a>&lt;/p>
&lt;p>The main problem was that the video signal was faded, dull, it was dificult to see the letters on the screen and in C64 mode the screen was almost impossible to read.&lt;/p></description></item><item><title>Z80 v2</title><link>http://blog.romheat.net/posts/2025/25_01_04_z80_v2/</link><pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2025/25_01_04_z80_v2/</guid><description>&lt;h2 id="z80-v2">Z80 v2&lt;/h2>
&lt;p>I&amp;rsquo;m not sure but still soon to say that this year will be the year of the Z80. I&amp;rsquo;ve been working on a new version of the Z80 computer that I&amp;rsquo;ve built last year. The new version that I have in mind will have a lot of improvements over the previous one, and possibly a printed circuit board (PCB) to make it more professional.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YK0JlRJ-kow?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;p>Improvements that I have in mind:&lt;/p></description></item><item><title>SparcStation Afternoon</title><link>http://blog.romheat.net/posts/2024/24_12_28_sparcstation_afternoon/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_12_28_sparcstation_afternoon/</guid><description>&lt;p>&lt;img src="https://imgur.com/1XN3Rmt.png" alt="">&lt;/p>
&lt;p>Some pictures about second attempt to install T2/Sde 24.12 on my Sun SparcStation 5.&lt;/p>
&lt;p>&lt;img src="https://imgur.com/d3wvGAv.png" alt="">
&lt;img src="https://imgur.com/dyvty0t.png" alt="">
&lt;img src="https://imgur.com/LTi6lBz.png" alt="">
&lt;img src="https://imgur.com/As35aCD.png" alt="">
&lt;img src="https://imgur.com/ExKFBlQ.png" alt="">
&lt;img src="https://imgur.com/vPRXQcX.png" alt="">
&lt;img src="https://imgur.com/5bQTlyr.png" alt="">&lt;/p>
&lt;p>And the final result, the system crashed during the installation, with the whatchdog timer error.&lt;/p>
&lt;p>&lt;img src="https://imgur.com/lgr1lmu.png" alt="">&lt;/p>
&lt;h1 id="a-technical-overview-of-the-sun-sparcstation-5">A Technical Overview of the Sun SPARCstation 5&lt;/h1>
&lt;p>The Sun SPARCstation 5 (commonly referred to as the SS5) is a workstation computer introduced by Sun Microsystems in 1994. It was part of Sun&amp;rsquo;s highly successful SPARCstation family, which became renowned for their use in engineering, scientific computing, and other technical fields. The SS5 was built around Sun’s proprietary SPARC architecture and remains a notable example of 1990s workstation technology.&lt;/p></description></item><item><title>Windows 1 Installation</title><link>http://blog.romheat.net/posts/2024/24_12_25_windows_1_0_install/</link><pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_12_25_windows_1_0_install/</guid><description>&lt;h1 id="installing-windows-10-on-an-already-installed-ms-dos-33-system">Installing Windows 1.0 on an Already Installed MS-DOS 3.3 System&lt;/h1>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Microsoft Windows 1.0, first released in 1985, was a significant step in personal computing, heralding the shift from command-line interfaces to graphical user interfaces (GUIs). Even though it was rudimentary by today&amp;rsquo;s standards, it laid the groundwork for the Windows operating environment that countless systems rely on today. For enthusiasts and tech aficionados, installing Windows 1.0 over an already installed MS-DOS 3.3 system presents a time capsule that exemplifies the early days of modern computing. This guide explores the history, features, and steps needed to embark on this nostalgic installation journey.&lt;/p></description></item><item><title>C128 fixing video signal</title><link>http://blog.romheat.net/posts/2024/24_11_30_c128_video/</link><pubDate>Sat, 30 Nov 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_11_30_c128_video/</guid><description>&lt;h1 id="revamping-the-commodore-128-video-output-removing-the-rf-modulator-for-enhanced-rgbi-output">Revamping the Commodore 128 Video Output: Removing the RF Modulator for Enhanced RGBI Output&lt;/h1>
&lt;p>Today I&amp;rsquo;ve decided try to fix the video signal on my C128. The video signal was not as bright as it should be.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/V8qiMuj.jpg" alt="C128 Video">&lt;/p>
&lt;p>The Commodore 128 (C128) is a vintage computer that has carved its niche in the hearts of retro computing enthusiasts. When it comes to video output, many users have wrestled with the limitations and quality of the original RF (radio frequency) modulator. This article delves into the process of removing the RF modulator and replacing it with a high-quality RGBI output using the TSH7316 IC, a specialized HDTV video amplifier. Leveraging RGBI not only enhances the video quality significantly but also makes connectivity with modern displays much easier.&lt;/p></description></item><item><title>C128 fixing video signal</title><link>http://blog.romheat.net/posts/2024/24_11_30_c128_video_fix_1/</link><pubDate>Sat, 30 Nov 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_11_30_c128_video_fix_1/</guid><description>&lt;h2 id="c128-fixing-video-signal">C128 fixing video signal&lt;/h2>
&lt;p>Today I&amp;rsquo;ve decided try to fix the video signal on my C128. The video signal was not as bright as it should be.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/V8qiMuj.jpg" alt="C128 Video">&lt;/p>
&lt;p>I&amp;rsquo;ve decided to remove the RF modulator and use the RGBI output and replace it with a new one based on TSH7316 IC.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/Upuo7NI.jpg" alt="RF1">
&lt;img src="https://i.imgur.com/sgRUkBd.jpg" alt="RF2">
&lt;img src="https://i.imgur.com/WFgwgaG.jpg" alt="RF3">&lt;/p>
&lt;p>&lt;a href="https://www.alldatasheet.es/datasheet-pdf/pdf/178184/TI/THS7316.html" target="_blank">Documentation&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://www.ti.com/product/THS7316" target="_blank">Documentation&lt;/a>&lt;/p>
&lt;p>The module&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/xsPLePp.jpg" alt="Module">
&lt;img src="https://i.imgur.com/36Oxtdy.jpg" alt="Module1">&lt;/p>
&lt;p>After replacing the RF modulator with the TSH7316, the video signal is the same, so the problem is not the RF modulator :-). I will continue investigating the issue. Maybe the problem is in the MOS8701 chip or the VIC-II chip.&lt;/p></description></item><item><title>Os2/warp3 installation</title><link>http://blog.romheat.net/posts/2024/24_11_30_os2_warp3/</link><pubDate>Sat, 30 Nov 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_11_30_os2_warp3/</guid><description>&lt;p>Some screenshots of the OS2/Warp3 installation process.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/sBceZwj.jpg" alt="OS2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/9fpjSs8.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/NvJZ3jA.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/6eQYdVm.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/TU2CVzD.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/ESpQEZL.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/Xt8tXRy.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/YREPfjy.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/QyU2bMN.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/e5gOlKX.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/Zm5aXqo.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/1XMXLpP.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/Rz2nFo6.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/gxry3Vl.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/gtJNWjp.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/eK2vXj7.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/u0qHbmB.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/5Oueg8c.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/iCcop1N.jpg" alt="Os2">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/V3Yecg9.jpg" alt="Os2">&lt;/p></description></item><item><title>Cleaning Avid Ultra 320/LVD SCSI Drives</title><link>http://blog.romheat.net/posts/2024/24_09_22_cleaning_avid_ultra_320/</link><pubDate>Sun, 22 Sep 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_09_22_cleaning_avid_ultra_320/</guid><description>&lt;h2 id="cleaning-avid-ultra-320lvd-scsi-drives">Cleaning Avid Ultra 320/LVD SCSI Drives&lt;/h2>
&lt;p>I recently acquired a couple of Avid Ultra 320/LVD SCSI drives. These drives are used in the Avid DS Nitris system, which is a high-end video editing system. The drives are:&lt;/p>
&lt;ul>
&lt;li>2 x 146GB Seagate Cheetah 15K.5 drives.&lt;/li>
&lt;li>2 x 300GB IBM Ultrastar 10K300 drives.&lt;/li>
&lt;/ul>
&lt;p>The drives are in good condition, but they have been sitting in storage for a while. I decided to clean them before using them.&lt;/p></description></item><item><title>Trying T2sde Linux on a Sun Sparcstation 5</title><link>http://blog.romheat.net/posts/2024/24_09_21_trying_t2/</link><pubDate>Sat, 21 Sep 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_09_21_trying_t2/</guid><description>&lt;h2 id="trying-t2sde-linux-on-a-sun-sparcstation-5">Trying T2sde Linux on a Sun Sparcstation 5&lt;/h2>
&lt;p>I have a Sun Sparcstation 5, it has installed NetBSD 9, that was the nearest OS that I could install on it. I wanted to try Linux on it, years ago I was able to install linux on a Ultra 1, from the network using a TFTP server and the process was fun. I learned a lot.&lt;/p>
&lt;p>Recently I had read about T2sde, a distribution that supports a lot of architectures, including SPARC. I decided to give it a try. There a lot of packages available, and the process sounds easy, and the best the have one of the most recent versions of the Linux kernel. Amazing!&lt;/p></description></item><item><title>Fixing Sharp MZ-700</title><link>http://blog.romheat.net/posts/2024/24_08_23_sharp_mz700/</link><pubDate>Fri, 23 Aug 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_08_23_sharp_mz700/</guid><description>&lt;h2 id="fixing-sharp-mz-700">Fixing Sharp MZ-700&lt;/h2>
&lt;p>Time to fix the Sharp MZ-700, I have this computer for a while, and it was not working. I decided to fix it. I opened the computer and I found that the power supply was not working correctly. I decided to do the standard procedure, replaced suspects capacitors and voltage regulators. Here are some pictures of the process:&lt;/p>
&lt;p>&lt;img src="https://imgur.com/zv4n4jm.jpg" alt="MZ700">&lt;/p>
&lt;p>This machine was manufactured in 1982, and it was a very popular computer in Japan. It was used in schools and homes. It has a Z80 CPU, 16KB of RAM, and 16KB of ROM. It has a built-in tape recorder, and it can display 40x24 characters in 8 colors.&lt;/p></description></item><item><title>C128 RGB Video 80col</title><link>http://blog.romheat.net/posts/2024/24_07_15_c128_video_1/</link><pubDate>Mon, 15 Jul 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_07_15_c128_video_1/</guid><description>&lt;h2 id="c128-rgb-video-80col-cable">C128 RGB Video 80col cable&lt;/h2>
&lt;p>The C128 seems to be lossing the brightness signal in the Composite output, the video is fine but the colors are not as bright as they should be.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/wHFtzZD.jpg?1" alt="BadVideoSignal">&lt;/p>
&lt;p>I&amp;rsquo;ve decided finally do the cable to connect the C128 rgbi output using composite video. The cable is a simple DB9 pin to phono RCA cable, ground to pin 1 and video signal to pin 7.&lt;/p></description></item><item><title>mtcp tools</title><link>http://blog.romheat.net/posts/2024/24_07_14_ftp_telnet/</link><pubDate>Sun, 14 Jul 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_07_14_ftp_telnet/</guid><description>&lt;h1 id="ftp_server--telnet_server">ftp_server / telnet_server&lt;/h1>
&lt;h2 id="warning">Warning&lt;/h2>
&lt;p>These tools are quick-and-dirty solutions, not meant for serious or long-term use. It also serves as a subtle reminder that they should be used cautiously due to their lack of security features :-)&lt;/p>
&lt;p>I wanted to have two fast programs to communicate with my old computers, from my linux box, I have three old pcs and I&amp;rsquo;m using mtcp on them. mTcp includes an ftp client and a telnet client, of course, I could use any of the existing ftp servers or telnet ones, but I don´t want to have more services running, also I thought that would be an opportunity to learn something.&lt;/p></description></item><item><title>CPM Disk Tool</title><link>http://blog.romheat.net/posts/2024/24_06_22_cpm_disk_tool/</link><pubDate>Sat, 22 Jun 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_06_22_cpm_disk_tool/</guid><description>&lt;p>&lt;a href="https://github.com/csegura/cpm_disk" target="_blank">&lt;/a>&lt;/p>
&lt;h2 id="cpm-disk-tool">CPM Disk Tool&lt;/h2>
&lt;p>I&amp;rsquo;m currently working on implementing a CP/M for my small Z80 CPU. As a reminder, this involves a single Z80 CPU connected to a Raspberry Pi, with the latter emulating RAM, ROM, and IO devices.&lt;/p>
&lt;p>I spent this weekend diving into the workings of CP/M disks. While there is a Unix tool available to create CP/M disk images &lt;a href="https://github.com/lipro-cpm4l/cpmtools" target="_blank">&lt;/a>, I&amp;rsquo;ve decided to create my own version using Python.&lt;/p></description></item><item><title>ISA-PicoMem</title><link>http://blog.romheat.net/posts/2024/24_06_05_isapicomem/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_06_05_isapicomem/</guid><description>&lt;p>I&amp;rsquo;m restoring this wonderful IBM XT 5150, machine powered up, but there wasn&amp;rsquo;t os. Floppy drive was`t working, I tried to boot from a 720k floppy disk, but it was impossible. So looking for a solution, I found a ISA-PicoMem (&lt;a href="https://github.com/FreddyVRetro/ISA-PicoMEM/tree/main" target="_blank">https://github.com/FreddyVRetro/ISA-PicoMEM/tree/main&lt;/a>) card, a wonderful card that allows you to boot from a SD card, add memory, and is able to connect to a network using wifi and ne2000 drivers, of course you need install mTCP.&lt;/p></description></item><item><title>Connecting a Z80 to a Raspberry Pi</title><link>http://blog.romheat.net/posts/2024/24_03_18_z80_pi/</link><pubDate>Mon, 18 Mar 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_03_18_z80_pi/</guid><description>&lt;p>I have a long history with computers, starting with a Sinclair Zx81 that I still own, followed by other models and others that I wished for, as time went by.&lt;/p>
&lt;p>A while back, I found an old box with some old processors, x386, x486, a few Pentiums first generation and two Zilog Z80. Then I got a kind of retro-feeling in my mind and I watched some YouTube videos about them. One of them was the classic nop-test, I had fun with this for a whole afternoon.&lt;/p></description></item><item><title>Fixing Dragon 32 Power supply</title><link>http://blog.romheat.net/posts/2024/24_03_16_dragon_power_supply/</link><pubDate>Sat, 16 Mar 2024 00:00:00 +0000</pubDate><guid>http://blog.romheat.net/posts/2024/24_03_16_dragon_power_supply/</guid><description>&lt;p>This morning the Dragon 32 power supply broke. I have a Dragon 32 that I bought one time ago. But when I tried to turn it on, it didn&amp;rsquo;t work. I checked the power circuit inside of the Dragon 32 and found that the regulator was broken.&lt;/p>
&lt;p>It was a LM340T 7812, 12v regulator, so I replaced it with a new one. But when I tried to turn it on, it didn&amp;rsquo;t work.&lt;/p></description></item><item><title>IBM 5150 Motherboard</title><link>http://blog.romheat.net/posts/2024/24_02_03_ibm5150_motherboard/</link><pubDate>Sat, 03 Feb 2024 06:37:07 +0100</pubDate><guid>http://blog.romheat.net/posts/2024/24_02_03_ibm5150_motherboard/</guid><description>&lt;p>I have been repairing the IBM 5150 motherboard.&lt;/p>
&lt;p>Tantalum Capacitors are known to fail, :-) This is the famous C56&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/zXfl75J.jpg" alt="Exploded">&lt;/p>
&lt;p>Almost each memory chip had a tantalum capacitor.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/NfYTaMD.jpg?1" alt="Motherboard">&lt;/p>
&lt;p>Also ISA slots had tantalum capacitors.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/Rl7MA11.jpg?1" alt="Motherboard2">&lt;/p>
&lt;p>This ones, near the power supply connector, were also tested.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/Haumat5.jpg?1" alt="Motherboard3">&lt;/p></description></item><item><title>IBM Model M keyboard</title><link>http://blog.romheat.net/posts/2024/24_02_03_ibmmodelmkeyboard/</link><pubDate>Sat, 03 Feb 2024 06:37:07 +0100</pubDate><guid>http://blog.romheat.net/posts/2024/24_02_03_ibmmodelmkeyboard/</guid><description>&lt;p>I have been repairing the model m keyboard, but not lucky this time. The membrane is broken and I have to replace it. I have to find a replacement membrane.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/ZmDpXkr.jpg?1" alt="Model M">&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/E3ozOSm.jpg" alt="Model M">&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/HUPSx_GZwGc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Fixing the Dragon 32</title><link>http://blog.romheat.net/posts/2024/24_01_14_fixing_the_dragon_32/</link><pubDate>Sun, 14 Jan 2024 07:07:07 +0100</pubDate><guid>http://blog.romheat.net/posts/2024/24_01_14_fixing_the_dragon_32/</guid><description>&lt;p>I have been repairing the Dragon 32&lt;/p>
&lt;p>When I powered it up, the screen was all garbled. I opened it up and found a capacitor that was bulging.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/5HENkOF.jpg" alt="Screen">&lt;/p>
&lt;p>Nude Dragon&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/ndiTZYo.jpg" alt="Motherboard">&lt;/p>
&lt;p>Replaced Capacitor&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/ZlzRiRq.jpg" alt="Capacitor">&lt;/p>
&lt;p>First attempt to fix it was to replace the bulging capacitor. I replaced it with a new one, but after powering it up, the cursor was missing.&lt;/p>
&lt;p>&lt;img src="https://i.imgur.com/fBAFPR0.jpg" alt="No cursor">&lt;/p>
&lt;p>Finally I have had to replace most of the capacitors on the board.&lt;/p></description></item><item><title>KVM notes</title><link>http://blog.romheat.net/posts/2023/23_11_07_kvm/</link><pubDate>Tue, 07 Nov 2023 04:12:07 +0100</pubDate><guid>http://blog.romheat.net/posts/2023/23_11_07_kvm/</guid><description>&lt;h1 id="kvm-notes">KVM notes&lt;/h1>
&lt;p>Check if the CPU supports virtualization:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>egrep -c &lt;span style="color:#e6db74">&amp;#39;(vmx|svm)&amp;#39;&lt;/span> /proc/cpuinfo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>lscpu | grep Virtualization
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Install KVM&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-clients virtinst virt-manager
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Check Virtualization&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>systemctl status libvirtd
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl --now enable libvirtd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Check qemu and virsh:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kvm --version
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>virsh --version
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Components that can be used&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo virt-host-validate
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Check IOMMU&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>dmesg | grep -e DMAR -e IOMMU
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Edit /etc/default/grub if WARN (IOMMU not enabled)&lt;/li>
&lt;/ul>
&lt;p>&lt;code>GRUB_CMDLINE_LINUX=&amp;quot;intel_iommu=on&amp;quot;&lt;/code> add this line to /etc/default/grub and &lt;code>sudo update-grub&lt;/code>&lt;/p></description></item><item><title>LLM Conversation Commodore 64 vs ZX Spectrum</title><link>http://blog.romheat.net/posts/2023/23_10_11_llm_conversation/</link><pubDate>Wed, 11 Oct 2023 07:07:07 +0100</pubDate><guid>http://blog.romheat.net/posts/2023/23_10_11_llm_conversation/</guid><description>&lt;p>Playing with langchain this is the conversation between a Commodore 64 and a ZX Spectrum.&lt;/p>
&lt;p>Debate rules&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-plaintext" data-lang="plaintext">&lt;span style="display:flex;">&lt;span>You are in a debate your goal is to persuade your conversation partner of your point of view. 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Argue about topic polite. Be concise and conclusive use arround 60 words.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DO look up information with your tool to refute your partner&amp;#39;s claims.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DO NOT fabricate fake citations.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>DO NOT cite any source that you did not look up.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Do not add anything else.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Stop speaking the moment you finish speaking from your perspective.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Context: {memory}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Conversation for 10 rounds&lt;/p></description></item><item><title>Photon (work notes)</title><link>http://blog.romheat.net/posts/2023/23_09_25_photon/</link><pubDate>Mon, 25 Sep 2023 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2023/23_09_25_photon/</guid><description>&lt;h1 id="photon-misc">PHOTON MISC&lt;/h1>
&lt;h3 id="enabledisable-docker">enable/disable docker&lt;/h3>
&lt;pre tabindex="0">&lt;code>systemctl start docker
systemctl enable docker
&lt;/code>&lt;/pre>&lt;h3 id="install-packages">install packages&lt;/h3>
&lt;pre tabindex="0">&lt;code>tdnf install git
tdnf install github-cli
tdnf install zsh
tdnf install wget
tdnf install docker-compose
tdnf install nfs-tools
tdnf install nfs-utils
tdnf install tar
&lt;/code>&lt;/pre>&lt;h3 id="keyboard">keyboard&lt;/h3>
&lt;pre tabindex="0">&lt;code>localectl
localectl list-keymaps
tdnf install kbd
localectl list-keymaps
localectl set-keymap es
reboot
&lt;/code>&lt;/pre>&lt;h3 id="sshd-root-access">sshd root access&lt;/h3>
&lt;pre tabindex="0">&lt;code>cat &amp;gt; /etc/systemd/network/10-static-en.network &amp;lt;&amp;lt; &amp;#34;EOF&amp;#34;
[Match]
Name=eth0
[Network]
Address=192.168.1.200/24
Gateway=192.168.1.1
&lt;/code>&lt;/pre>&lt;p>&lt;code>chmod 644 10-static-en.network&lt;/code>&lt;/p>
&lt;h3 id="install-docker-compose-check-versions-on-github-">install docker-compose (check versions on github &lt;a href="https://github.com/docker/compose/releases" target="_blank">https://github.com/docker/compose/releases&lt;/a>)&lt;/h3>
&lt;pre tabindex="0">&lt;code>curl -L https://github.com/docker/compose/releases/download/v2.9.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
&lt;/code>&lt;/pre>&lt;h3 id="install-portainer---expose-port-9000">install portainer - expose port 9000&lt;/h3>
&lt;pre tabindex="0">&lt;code>docker volume create portainer_data
ls -la
docker run -d -p 9000:9000 --name Portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

docker run -d -p 8000:8000 -p 9443:9443 --name rh_portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
&lt;/code>&lt;/pre>&lt;h3 id="iptables---open-docker-expose-ports">iptables - open docker expose ports&lt;/h3>
&lt;pre tabindex="0">&lt;code>iptables -L (list rules)
iptables -nL (show port numbers)
# open port 9000
iptables -I INPUT 4 -p tcp --dport 9000 -j ACCEPT
&lt;/code>&lt;/pre>&lt;h3 id="save-iptables">save iptables&lt;/h3>
&lt;p>add -I INPUT 4 -p tcp &amp;ndash;dport 9000 -j ACCEPT&lt;/p></description></item><item><title>NVidia Install (work notes)</title><link>http://blog.romheat.net/posts/2023/23_09_23_nvidia_install/</link><pubDate>Sat, 23 Sep 2023 07:07:07 +0100</pubDate><guid>http://blog.romheat.net/posts/2023/23_09_23_nvidia_install/</guid><description>&lt;h1 id="nvidia-install">NVIDIA Install&lt;/h1>
&lt;p>&lt;a href="https://communities.vmware.com/t5/Photon-OS-Discussions/NVidia-Triton-on-Photon-OS/m-p/2926221" target="_blank">https://communities.vmware.com/t5/Photon-OS-Discussions/NVidia-Triton-on-Photon-OS/m-p/2926221&lt;/a>
&lt;a href="https://plmlab.math.cnrs.fr/plmshift/gpu_driver/-/blob/master/photon3.0/Dockerfile" target="_blank">https://plmlab.math.cnrs.fr/plmshift/gpu_driver/-/blob/master/photon3.0/Dockerfile&lt;/a>&lt;/p>
&lt;pre tabindex="0">&lt;code>nvidia_binary_version=&amp;#34;515.76&amp;#34;
nvidia_binary=&amp;#34;NVIDIA-Linux-x86_64-${nvidia_binary_version}.run&amp;#34;
mkdir tmp
cd tmp
wget -q https://us.download.nvidia.com/XFree86/Linux-x86_64/${nvidia_binary_version}/${nvidia_binary}
chmod +x ${nvidia_binary}
./${nvidia_binary} --accept-license --ui=none --no-kernel-module --no-questions
nvidia-smi
&lt;/code>&lt;/pre>&lt;pre tabindex="0">&lt;code># required
tdnf install tar
tdnf install -y build-essential wget tar
tdnf install -y linux-esx-devel

nvidia_binary_version=&amp;#34;470.57.02&amp;#34;
nvidia_binary=&amp;#34;NVIDIA-Linux-x86_64-${nvidia_binary_version}.run&amp;#34;
wget -q https://us.download.nvidia.com/XFree86/Linux-x86_64/${nvidia_binary_version}/${nvidia_binary} 
chmod +x ${nvidia_binary}

./${nvidia_binary} --kernel-source-path=/usr/lib/modules/`uname -r`/build --ui=none --no-questions --accept-license


Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 470.57.02.....

Welcome to the NVIDIA Software Installer for Unix/Linux

Detected 32 CPUs online; setting concurrency level to 32.
Installing NVIDIA driver version 470.57.02.
There appears to already be a driver installed on your system (version: 470.57.02). As part of installing this driver (version:
470.57.02), the existing driver will be uninstalled. Are you sure you want to continue? (Answer: Continue installation)
Performing CC sanity check with CC=&amp;#34;/usr/bin/cc&amp;#34;.
Performing CC check.
Using the kernel source path &amp;#39;/usr/lib/modules/5.10.132-1.ph4-esx/build&amp;#39; as specified by the &amp;#39;--kernel-source-path&amp;#39; commandline
option.
Kernel source path: &amp;#39;/usr/lib/modules/5.10.132-1.ph4-esx/build&amp;#39;
Kernel output path: &amp;#39;/usr/lib/modules/5.10.132-1.ph4-esx/build&amp;#39;
Performing Compiler check.
Performing Dom0 check.
Performing Xen check.
Performing PREEMPT_RT check.
Performing vgpu_kvm check.
Cleaning kernel module build directory.
Building kernel modules
 : [##############################] 100%
Kernel module compilation complete.
Unable to determine if Secure Boot is enabled: No such file or directory
Kernel messages:
[ 18.636632] IPv6: ADDRCONF(NETDEV_CHANGE): veth9f70f59: link becomes ready
[ 18.636662] br-ff0ee4ab2a87: port 1(veth9f70f59) entered blocking state
[ 18.636663] br-ff0ee4ab2a87: port 1(veth9f70f59) entered forwarding state
[ 19.117388] wireguard: WireGuard 1.0.0 loaded. See www.wireguard.com for information.
[ 19.117393] wireguard: Copyright (C) 2015-2019 Jason A. Donenfeld &amp;lt;Jason@zx2c4.com&amp;gt;. All Rights Reserved.
[ 75.562344] kauditd_printk_skb: 62 callbacks suppressed
[ 75.562348] audit: type=1006 audit(1662044975.583:97): pid=1653 uid=0 subj==unconfined old-auid=4294967295 auid=0 tty=(none)
old-ses=4294967295 ses=1 res=1
[ 75.647052] audit: type=1006 audit(1662044975.667:98): pid=1643 uid=0 subj==unconfined old-auid=4294967295 auid=0 tty=(none)
old-ses=4294967295 ses=2 res=1
[ 814.633125] nvidia: loading out-of-tree module taints kernel.
[ 814.633137] nvidia: module license &amp;#39;NVIDIA&amp;#39; taints kernel.
[ 814.633138] Disabling lock debugging due to kernel taint
[ 814.665314] nvidia-nvlink: Nvlink Core is being initialized, major device number 246

[ 814.666286] nvidia 0000:1b:00.0: enabling device (0000 -&amp;gt; 0003)
[ 814.667559] nvidia 0000:1b:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 814.712479] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 470.57.02 Tue Jul 13 16:14:05 UTC 2021
[ 814.728936] nvidia_uvm: module uses symbols from proprietary module nvidia, inheriting taint.
[ 814.732612] nvidia-uvm: Loaded the UVM driver, major device number 244.
[ 814.737822] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 470.57.02 Tue Jul 13 16:06:24 UTC
2021
[ 814.740363] [drm] [nvidia-drm] [GPU ID 0x00001b00] Loading driver
[ 814.740365] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:1b:00.0 on minor 1
[ 814.745448] [drm] [nvidia-drm] [GPU ID 0x00001b00] Unloading driver
[ 814.748380] nvidia-modeset: Unloading
[ 814.753086] nvidia-uvm: Unloaded the UVM driver.
[ 814.756718] nvidia-nvlink: Unregistered the Nvlink Core, major device number 246

WARNING: nvidia-installer was forced to guess the X library path &amp;#39;/usr/lib64&amp;#39; and X module path &amp;#39;/usr/lib64/xorg/modules&amp;#39;; these
 paths were not queryable from the system. If X fails to find the NVIDIA X driver module, please install the `pkg-config`
 utility and the X.Org SDK/development package for your distribution and reinstall the driver.


WARNING: Unable to find a suitable destination to install 32-bit compatibility libraries. Your system may not be set up for 32-bit
 compatibility. 32-bit compatibility files will not be installed; if you wish to install them, re-run the installation and
 set a valid directory with the --compat32-libdir option.

Uninstalling the previous installation with /usr/bin/nvidia-uninstall.
Searching for conflicting files:
 Searching: [##############################] 100%
Installing &amp;#39;NVIDIA Accelerated Graphics Driver for Linux-x86_64&amp;#39; (470.57.02):
 Installing: [##############################] 100%
Driver file installation is complete.
Running post-install sanity check:
 Checking: [##############################] 100%
Post-install sanity check passed.
Running runtime sanity check:
 Checking: [##############################] 100%
Runtime sanity check passed.
Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver
will be used when you restart X? Any pre-existing X configuration file will be backed up. (Answer: No)

Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version: 470.57.02) is now complete. Please update your
xorg.conf file as appropriate; see the file /usr/share/doc/NVIDIA_GLX-1.0/README.txt for details.


nvidia-smi
Thu Sep 1 15:24:11 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02 Driver Version: 470.57.02 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:1B:00.0 Off | N/A |
| 0% 62C P0 1W / 200W | 0MiB / 7982MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
&lt;/code>&lt;/pre>&lt;h1 id="nvidia-container-toolkit">nvidia-container-toolkit&lt;/h1>
&lt;p>&lt;a href="https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html" target="_blank">https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html&lt;/a>
&lt;a href="https://github.com/NVIDIA/nvidia-docker" target="_blank">https://github.com/NVIDIA/nvidia-docker&lt;/a>&lt;/p></description></item><item><title>GPT News anonymizer</title><link>http://blog.romheat.net/posts/2023/23_08_16_gpt_model_explorer/</link><pubDate>Wed, 16 Aug 2023 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2023/23_08_16_gpt_model_explorer/</guid><description>&lt;p>I&amp;rsquo;m using at home my own server to run gpt models. Without cost I can do funny and stupid things. This one run a pipeline of tasks to anonymize news, critics, sumarize, extract names, places, products, etc.&lt;/p>
&lt;p>First I get the entries from google trends&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/misc/gpt_extractor.png" alt="">&lt;/p>
&lt;p>Then I use the GPT model to generate the news.&lt;/p>
&lt;p>With this I can generate my own &amp;ldquo;News Corporation&amp;rdquo;&lt;/p>
&lt;p>The pipeline is like this:&lt;/p></description></item><item><title>RemotePad (Project Github Public)</title><link>http://blog.romheat.net/posts/2023/23_07_16_remotepad/</link><pubDate>Sun, 16 Jul 2023 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2023/23_07_16_remotepad/</guid><description>&lt;p>Crazy idea to draw over screen using any tablet or phone :-) of course on linux&lt;/p>
&lt;p>Is a client-server application that allows users to use their tablet devices to draw over their computer screen. It is designed to enhance creativity and collaboration by providing an interactive drawing experience. This documentation will guide you through the installation, setup, and usage of the program.&lt;/p>
&lt;p>WORK IN PROGRESS&lt;/p>
&lt;p>Features
Two drawing modes: Mouse Drawing Mode (local) and Tablet Drawing Mode (remote)
Tablet Drawing Mode accessible via a web interface, compatible with various tablet devices including iPads and Android tablets/phones.
Screen capture and drawing capabilities on captured images.
Supports image resizing for optimal tablet viewing.&lt;/p></description></item><item><title>Wireguard Setup (work notes)</title><link>http://blog.romheat.net/posts/2022/22_10_01_wireguard/</link><pubDate>Sat, 01 Oct 2022 05:17:17 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_10_01_wireguard/</guid><description>&lt;p>Generate a valid and working WireGuard configuration file /etc/wireguard/wg0.conf. Our setup guide offers details.&lt;/p>
&lt;p>Note: You may have to replace the Endpoint hostname with the WireGuard server IP address in the WireGuard configuration file. DNS may or may not be applied when systemd brings the wg0 interface up.
Add the WireGuard service to systemd:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo systemctl enable wg-quick@wg0.service
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo systemctl daemon-reload
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Start the new service immediately:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo systemctl start wg-quick@wg0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Reboot your computer system to verify the automatic connection on startup works as expected.&lt;/p></description></item><item><title>Nvidia Drivers on Ubuntu 20.04 (work notes)</title><link>http://blog.romheat.net/posts/2022/22_09_24_nvidia_ubuntu_2004/</link><pubDate>Sat, 24 Sep 2022 05:17:17 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_09_24_nvidia_ubuntu_2004/</guid><description>&lt;h1 id="install-nvidia-drivers-ubuntu-2004--2204">Install nvidia drivers ubuntu 20.04 / 22.04&lt;/h1>
&lt;p>hypervisor.cpuid.v0 -&amp;gt; FALSE in vmware&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo apt install build-essential libglvnd-dev
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>First Disable nouveau &amp;amp; enable unsuported GPU’s for open source drivers:&lt;/p>
&lt;ol>
&lt;li>Go to: /etc/modprobe.d/&lt;/li>
&lt;li>Make a file: blacklist-nvidia-nouveau.conf&lt;/li>
&lt;li>Put this in the file:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>blacklist nouveau
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>options nouveau modeset&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="4">
&lt;li>Make a other “nvidia.conf” file and put this in the file: options nvidia&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>NVreg_OpenRmEnableUnsupportedGpus&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="5">
&lt;li>Updat kernel init ram fs:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo update-initramfs -u
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="6">
&lt;li>Uninstall intel microcode&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo dpkg -l | grep intel
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt purge intel-microcode
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo update-grub
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="9">
&lt;li>Reboot&lt;/li>
&lt;li>Go to the Nvidia site to the page to download the driver that you want.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>mkdir tmp &amp;amp; cd tmp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget https://es.download.nvidia.com/XFree86/Linux-x86_64/515.76/NVIDIA-Linux-x86_64-515.76.run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="11">
&lt;li>Copy the URL of the download butten and past it behind wget to download it to the current folder&lt;/li>
&lt;li>Sudo chmod 700 the file&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo chmod &lt;span style="color:#ae81ff">700&lt;/span> NVIDIA*
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="14">
&lt;li>Run the install file: sudo .\filename.run -m=kernel-open&lt;/li>
&lt;li>After the instalation reboot the server&lt;/li>
&lt;li>Test with nvidia-smi&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo apt install nvidia-driver-470-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install nvidia-utils-470-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo lshw -C display
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> *-display
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> description: VGA compatible controller
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> product: SVGA II Adapter
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> vendor: VMware
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> physical id: f
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> bus info: pci@0000:00:0f.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> version: &lt;span style="color:#ae81ff">00&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> width: &lt;span style="color:#ae81ff">32&lt;/span> bits
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> clock: 33MHz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> capabilities: vga_controller bus_master cap_list rom
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> configuration: driver&lt;span style="color:#f92672">=&lt;/span>vmwgfx latency&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">64&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> resources: irq:16 ioport:1070&lt;span style="color:#f92672">(&lt;/span>size&lt;span style="color:#f92672">=&lt;/span>16&lt;span style="color:#f92672">)&lt;/span> memory:e8000000-efffffff memory:fe000000-fe7fffff memory:c0000-dffff
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> *-display UNCLAIMED
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> description: VGA compatible controller
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> product: NVIDIA Corporation
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> vendor: NVIDIA Corporation
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> physical id: &lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> bus info: pci@0000:0b:00.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> version: a1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> width: &lt;span style="color:#ae81ff">64&lt;/span> bits
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> clock: 33MHz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> capabilities: pm msi pciexpress vga_controller cap_list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> configuration: latency&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">64&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> resources: memory:fc000000-fcffffff memory:d0000000-dfffffff memory:e4000000-e5ffffff ioport:5000&lt;span style="color:#f92672">(&lt;/span>size&lt;span style="color:#f92672">=&lt;/span>128&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>List Drivers&lt;/p></description></item><item><title>LVM Add Disk (work notes)</title><link>http://blog.romheat.net/posts/2022/22_09_23_lvm_add_disk/</link><pubDate>Fri, 23 Sep 2022 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_09_23_lvm_add_disk/</guid><description>&lt;h1 id="introduction--explanation-pasted">Introduction &amp;amp; Explanation (pasted)&lt;/h1>
&lt;p>Why LVM?&lt;/p>
&lt;p>The reason why we love LVM is because when you need to increase the space it’s really easy. If you have vanilla EXT4 and you want to enlarge it, then you need to work out extents and at this point we feel it’s too complicated and technical. See here if you simply want to add a new EXT4 disk without LVM.&lt;/p>
&lt;p>Below are the commands used to get the whole operation going.&lt;/p></description></item><item><title>Docker Ubuntu (work notes)</title><link>http://blog.romheat.net/posts/2022/22_09_22_docker_ubuntu/</link><pubDate>Thu, 22 Sep 2022 05:17:17 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_09_22_docker_ubuntu/</guid><description>&lt;h1 id="install-on-ubuntu-2004">Install on ubuntu 20.04&lt;/h1>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo apt install apt-transport-https ca-certificates curl software-properties-common
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo add-apt-repository &lt;span style="color:#e6db74">&amp;#34;deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apt-cache policy docker-ce
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install docker-ce
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo systemctl status docker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Network Explorer</title><link>http://blog.romheat.net/posts/2022/22_08_20_network_explorer/</link><pubDate>Sat, 20 Aug 2022 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_08_20_network_explorer/</guid><description>&lt;p>Finally I have a working version of the Network Explorer. This is a tool that allows me to draw the network topology of a network using SNMP.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Fy5OjKe5GYM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Docker Context (work notes)</title><link>http://blog.romheat.net/posts/2022/22_08_17_docker_context/</link><pubDate>Wed, 17 Aug 2022 05:17:17 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_08_17_docker_context/</guid><description>&lt;h1 id="working-on-remote-docker-host-using-docker-context">Working on remote Docker Host using docker context&lt;/h1>
&lt;h2 id="ssh-keys">SSH keys&lt;/h2>
&lt;p>In order to use remote Docker host, as a prerequisite you need SSH enabled (required login using SSH keys).&lt;/p>
&lt;h3 id="generate-or-find-your-public-ssh-key">Generate or find your public SSH key&lt;/h3>
&lt;p>If the file does not exist, generate the SSH key-pair using following command&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>ssh-keygen -t rsa -b &lt;span style="color:#ae81ff">4096&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="setting-up-ssh-keys-to-remote-machine">Setting up SSH keys to remote machine&lt;/h2>
&lt;h3 id="copying-your-public-ssh-key-to-machine">Copying your public ssh key to machine&lt;/h3>
&lt;p>You can use password-based authentication to get into linux machine for the first time, and then use the following command:&lt;/p></description></item><item><title>Docker Root (work notes)</title><link>http://blog.romheat.net/posts/2022/22_07_14_docker_root/</link><pubDate>Thu, 14 Jul 2022 05:17:17 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_07_14_docker_root/</guid><description>&lt;h1 id="procedure">Procedure&lt;/h1>
&lt;p>To relocate the Docker root directory, complete the following steps as root or a user with “sudo all” authority:&lt;/p>
&lt;p>Stop the Docker services:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>sudo -i
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl stop docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl stop docker.socket
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>systemctl stop containerd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Create the necessary directory structure into which to move Docker root by running the following command. This directory structure must reside on a file system with at least 50 GB free disk space. Significantly more disk space might be required depending on your daily ingestion volumes and data retention policy.&lt;/p></description></item><item><title>Drawing Rules</title><link>http://blog.romheat.net/posts/2022/22_07_04_drawing_rules/</link><pubDate>Mon, 04 Jul 2022 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_07_04_drawing_rules/</guid><description>&lt;p>Today I&amp;rsquo;m using the same technique to draw the rules of the Fortinet devices.&lt;/p>
&lt;p>It Looks pretty amazing.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/misc/draw_rules.png" alt="">&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/misc/draw_rules1.png" alt="">&lt;/p>
&lt;p>This is a sample of the dot file generated by the parser.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-s" data-lang="s">&lt;span style="display:flex;">&lt;span>digraph G {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>fontname&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Arial&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>node [fontname&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Arial&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>edge [fontname&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Arial&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>graph [rankdir&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;LR&amp;#34;&lt;/span>,fontsize&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">9&lt;/span> ];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>node [fontsize&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">9&lt;/span>, shape&lt;span style="color:#f92672">=&lt;/span>ellipse];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>edge [lblstyle&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;above, sloped&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subgraph &lt;span style="color:#e6db74">&amp;#34;_default&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cluster&lt;span style="color:#f92672">=&lt;/span>true;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;_default&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> style&lt;span style="color:#f92672">=&lt;/span>filled;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> color&lt;span style="color:#f92672">=&lt;/span>lightgrey;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node [style&lt;span style="color:#f92672">=&lt;/span>filled];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;src15&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;src25&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>subgraph &lt;span style="color:#e6db74">&amp;#34;VLAN 961&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> cluster&lt;span style="color:#f92672">=&lt;/span>true;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;VLAN 961&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> style&lt;span style="color:#f92672">=&lt;/span>filled;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> color&lt;span style="color:#f92672">=&lt;/span>lightgrey;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> node [style&lt;span style="color:#f92672">=&lt;/span>filled];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;dst15&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;dst25&amp;#34;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>src15 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;NET_USERS2&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;orange&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>NET_USERS2&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">10.10.25.0&lt;/span>&lt;span style="color:#f92672">/&lt;/span>&lt;span style="color:#ae81ff">24&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dst15 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;NET_IMPRESORAS&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;orange&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>NET_IMPRESORAS&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">10.10.61.50-10.10.61.55&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>proto15 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ALL&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#BAB86C&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>ALL&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sec15 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#C0C0C0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>schedule&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#ffffff&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>always&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;src15&amp;#34;&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;proto15&amp;#34;&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;sec15&amp;#34;&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;dst15&amp;#34;&lt;/span> [label&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;lan2impresoras&amp;#34;&lt;/span>, fontsize&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">9&lt;/span>, color&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#A9A726&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>src25 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;NET_USERS2&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;orange&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>NET_USERS2&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">10.10.25.0&lt;/span>&lt;span style="color:#f92672">/&lt;/span>&lt;span style="color:#ae81ff">24&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dst25 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;SERVER1&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#00f7ff&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>SERVER&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">10.10.61.10&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>proto25 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;RDP&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#E5E4E2&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>RDP&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">3389&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Windows AD&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#E5E4E2&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>Windows AD&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;PING&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#E5E4E2&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>PING&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;IPERF&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#E5E4E2&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>IPERF&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">5201&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>s_g125 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;DCE-RPC&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#fffde7&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>DCE&lt;span style="color:#f92672">-&lt;/span>RPC&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">135&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;DNS&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#fffde7&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>DNS&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">53&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;KERBEROS&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#fffde7&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>KERBEROS&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">88&lt;/span> &lt;span style="color:#ae81ff">464&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;LDAP&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#fffde7&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>LDAP&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">389&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;LDAP_UDP&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#fffde7&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>LDAP_UDP&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;SAMBA&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#fffde7&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>SAMBA&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">139&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;SMB&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#fffde7&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>SMB&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>&lt;span style="color:#ae81ff">445&lt;/span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{ rank&lt;span style="color:#f92672">=&lt;/span>same; &lt;span style="color:#e6db74">&amp;#34;s_g125&amp;#34;&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;proto25&amp;#34;&lt;/span> [label&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Windows AD&amp;#34;&lt;/span>, fontsize&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">8&lt;/span>, penwidth&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">2&lt;/span>, style&lt;span style="color:#f92672">=&lt;/span>dotted]};
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sec25 [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> shape&lt;span style="color:#f92672">=&lt;/span>none
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> label &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">&amp;lt;&amp;lt;&lt;/span>table border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> cellspacing&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> port&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#C0C0C0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>schedule&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;&lt;/span>td align&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;left&amp;#34;&lt;/span> border&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span> bgcolor&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#ffffff&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>always&lt;span style="color:#f92672">&amp;lt;/&lt;/span>td&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/&lt;/span>tr&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/&lt;/span>table&lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">&amp;#34;src25&amp;#34;&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;proto25&amp;#34;&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;sec25&amp;#34;&lt;/span> &lt;span style="color:#f92672">-&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;dst25&amp;#34;&lt;/span> [label&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;lan2servidores&amp;#34;&lt;/span>, fontsize&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">9&lt;/span>, color&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;#A9A726&amp;#34;&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Parse Fortinet Config</title><link>http://blog.romheat.net/posts/2022/22_07_03_parse_fortinet_config/</link><pubDate>Sun, 03 Jul 2022 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_07_03_parse_fortinet_config/</guid><description>&lt;p>Some times things that seems easy, tend to be more complicated than expected, and sometimes things that seems complicated, are actually easy.&lt;/p>
&lt;p>I love simplicity. Yeah !!&lt;/p>
&lt;p>Sure that there is some law about how things tend to compexity, but I&amp;rsquo;m not going to talk about that. The thing is with the time, and security risks, netkork rules in this devices are getting more and more complex.&lt;/p>
&lt;p>I have been working with Fortinet devices for a while, and I have to say that they are very good devices. They have a lot of features, and they are very secure. But, as I said before, the rules are getting more complex, and sometimes is difficult to understand what is happening in the device.&lt;/p></description></item><item><title>Drawing Switches with node &amp; graphviz</title><link>http://blog.romheat.net/posts/2022/22_07_01_drawing_switches/</link><pubDate>Fri, 01 Jul 2022 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_07_01_drawing_switches/</guid><description>&lt;p>I have been working on a project that requires me to draw a lot of switches. I&amp;rsquo;m using SNMP to get the information from the switches, and I&amp;rsquo;m using Python to draw the switches.&lt;/p>
&lt;p>To do this, I have an small algorithm that reads the configuration of the switch and draws the switch in a SVG file.&lt;/p>
&lt;p>In a json file I have the main network configuration,, something like this&lt;/p></description></item><item><title>Synology Docker ssh context error</title><link>http://blog.romheat.net/posts/2022/22_06_12_synology/</link><pubDate>Sun, 12 Jun 2022 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2022/22_06_12_synology/</guid><description>&lt;h2 id="enable-homes">Enable homes&lt;/h2>
&lt;p>Modify sshd_config&lt;/p>
&lt;pre tabindex="0">&lt;code>Match User romheat 
 AllowTcpForwarding yes

PermitUserEnvironment yes
&lt;/code>&lt;/pre>&lt;h2 id="workarround-ssh-context-error">Workarround ssh context error&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>■ docker ps
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>error during connect: Get &lt;span style="color:#e6db74">&amp;#34;http://docker/v1.24/containers/json&amp;#34;&lt;/span>: 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>command &lt;span style="color:#f92672">[&lt;/span>ssh -l xxxx -- nas docker system dial-stdio&lt;span style="color:#f92672">]&lt;/span> has exited with exit status 127, please make sure the URL is valid, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>and Docker 18.09 or later is installed on the remote host: stderr&lt;span style="color:#f92672">=&lt;/span>sh: docker: command not found
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@sputnik | ~/tmp/abb 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>■ ssh nas &lt;span style="color:#e6db74">&amp;#39;echo $PATH&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/usr/bin:/bin:/usr/sbin:/sbin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@sputnik | ~/tmp/abb 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>■ ssh nas
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Synology strongly advises you not to run commands as the root user, who has
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>the highest privileges on the system. Doing so may cause major damages
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>to the system. Please note that &lt;span style="color:#66d9ef">if&lt;/span> you choose to proceed, all consequences are
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>at your own risk.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:~$ ls
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:~$ ls -la
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>total &lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>drwxrwxrwx+ &lt;span style="color:#ae81ff">1&lt;/span> user users &lt;span style="color:#ae81ff">8&lt;/span> Sep &lt;span style="color:#ae81ff">25&lt;/span> 17:54 .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>drwxrwxrwx+ &lt;span style="color:#ae81ff">1&lt;/span> root root &lt;span style="color:#ae81ff">54&lt;/span> Sep &lt;span style="color:#ae81ff">25&lt;/span> 17:52 ..
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>drwxrwxrwx+ &lt;span style="color:#ae81ff">1&lt;/span> user users &lt;span style="color:#ae81ff">30&lt;/span> Sep &lt;span style="color:#ae81ff">25&lt;/span> 17:54 .ssh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:~$ ls .ssh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>authorized_keys
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:~$ echo $PATH
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:~$ echo PATH&lt;span style="color:#f92672">=&lt;/span>$PATH &amp;gt;&amp;gt; ~/.ssh/environment
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:~$ cat .ssh/environment 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>PATH&lt;span style="color:#f92672">=&lt;/span>/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>user@CSSNAS:/etc$ sudo synogroup --add docker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Name: &lt;span style="color:#f92672">[&lt;/span>docker&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Type: &lt;span style="color:#f92672">[&lt;/span>AUTH_LOCAL&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group ID: &lt;span style="color:#f92672">[&lt;/span>65536&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Members: 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:/etc$ sudo synogroup --member docker user,root
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Name: &lt;span style="color:#f92672">[&lt;/span>docker&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Type: &lt;span style="color:#f92672">[&lt;/span>AUTH_LOCAL&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group ID: &lt;span style="color:#f92672">[&lt;/span>65536&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Members: 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0:&lt;span style="color:#f92672">[&lt;/span>user&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>1:&lt;span style="color:#f92672">[&lt;/span>root&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:/etc$ sudo synogroup --member docker root
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Name: &lt;span style="color:#f92672">[&lt;/span>docker&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Type: &lt;span style="color:#f92672">[&lt;/span>AUTH_LOCAL&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group ID: &lt;span style="color:#f92672">[&lt;/span>65536&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Group Members: 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>0:&lt;span style="color:#f92672">[&lt;/span>root&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>user@CSSNAS:/etc$ sudo chown root:docker /var/run/docker.sock
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo synopkg restart Docker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>BIM Workbench End</title><link>http://blog.romheat.net/posts/2021/21_10_30_bim_workbench_end/</link><pubDate>Sat, 30 Oct 2021 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2021/21_10_30_bim_workbench_end/</guid><description>&lt;p>It is time to move on to the next project. The BIM Workbench project is finished.&lt;/p>
&lt;p>Was an incredible journey, I learned a lot about Autodesk Forge, Vue.js, Node.js, and the Revit API. I am very happy with the result, and I am looking forward to the next project.&lt;/p>
&lt;p>Here are some videos of the project:&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/i-zsdE1sBSo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;p>This part shows the integration with Power BI mixing all the data from the project, and showing it in a dashboard in Power BI. Everything at the same time that the user is working on the project in Revit.&lt;/p></description></item><item><title>BC3 Browser</title><link>http://blog.romheat.net/posts/2021/21_09_12_bc3_browser/</link><pubDate>Sun, 12 Sep 2021 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2021/21_09_12_bc3_browser/</guid><description>&lt;p>As part of my BIM workbench project I&amp;rsquo;ve created a browser to show BC3 files on the browser, I need ths pice of software to link the BC3 files with the Revit files.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/FkVrMoHijXk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>BIM Workbench Demo</title><link>http://blog.romheat.net/posts/2021/21_06_26_bim_workbench_demo/</link><pubDate>Sat, 26 Jun 2021 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2021/21_06_26_bim_workbench_demo/</guid><description>&lt;p>I have been working on the BIM Workbench&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/tSWQkb7U7Xg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>BIM Workbench Beta</title><link>http://blog.romheat.net/posts/2021/21_01_01_bim_workbench_beta/</link><pubDate>Sun, 20 Jun 2021 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2021/21_01_01_bim_workbench_beta/</guid><description>&lt;p>This is a beta version of a BIM Workbench for Autodesk Revit. It is a Vue frontend and a Node.js backend. The backend is a simple REST API that communicates with the Revit API. The frontend is a simple Vue.js app that allows the user to create a new project, upload a Revit file, and get the project information.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YwL4tIXBcIk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Portera</title><link>http://blog.romheat.net/posts/2020/20-05-30_portera/</link><pubDate>Sat, 30 May 2020 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2020/20-05-30_portera/</guid><description>&lt;h1 id="portera-">portera 🚀&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>portera&lt;/strong>🚀 provides remote logs for you node apps with an awesome style :).&lt;/p>&lt;/blockquote>
&lt;p>&lt;strong>portera&lt;/strong> has two parts, a library that wrap your console object by default, redirecting the output to &lt;strong>portera&lt;/strong> server, its receive your data and serve a web page where you can display an awesome output, just like that&lt;/p>
&lt;p>&lt;img src="https://github.com/csegura/portera/raw/master/docs/portera_web_0-1-1.gif" alt="Sample Web">&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>&lt;a href="https://github.com/csegura/portera" target="_blank">github&lt;/a>&lt;/p>
&lt;h2 id="motivation">Motivation&lt;/h2>
&lt;p>These days I spent more time at home by corona quarantine, time to practice and learn new things. I began to do a sample project in node for the company where I work, it was something that I had have in my mind time ago. The project its a middleware between our different management programs and third part applications, this middleware should contain all bussiness logic necesary by thrird part systems.&lt;/p></description></item><item><title>NEngine - SQL Authentication using JWT Tokens</title><link>http://blog.romheat.net/posts/2017/17_04_23_nengine/</link><pubDate>Sun, 23 Apr 2017 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2017/17_04_23_nengine/</guid><description>&lt;p>NEngine is a skeleton project that I use to start new projects where I need to use SQL Server for the database and JWT tokens for authentication. The project is available on &lt;a href="https://github.com/csegura/nengine" target="_blank">GitHub&lt;/a>&lt;/p>
&lt;p>It is necessary to have a SQL Server database with stored procedures to authenticate the user and generate the JWT token. The stored procedures are:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-json" data-lang="json">&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;CHECK_EMAIL&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;DATABASE.dbo.checkEmail @email = @email&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;SAVE_USER&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;DATABASE.dbo.saveUser @email = @email, @password = @password&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;LIST_USERS&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;DATABASE.dbo.listUsers&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;CHECK_PASSWORD&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;DATABASE.dbo.checkPassword @email = @email, @password = @password&amp;#34;&lt;/span>,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;#34;CHECK_PASSWORD1&amp;#34;&lt;/span>: &lt;span style="color:#e6db74">&amp;#34;DATABASE.dbo.checkPassword&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="stored-procedures">Stored Procedures&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>USE [DemoDB]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">GO&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">SET&lt;/span> ANSI_NULLS &lt;span style="color:#66d9ef">ON&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">GO&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">SET&lt;/span> QUOTED_IDENTIFIER &lt;span style="color:#66d9ef">ON&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">GO&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">ALTER&lt;/span> &lt;span style="color:#66d9ef">PROCEDURE&lt;/span> [dbo].[checkEmail] (&lt;span style="color:#f92672">@&lt;/span>email VARCHAR(&lt;span style="color:#ae81ff">50&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">AS&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">BEGIN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#f92672">*&lt;/span> &lt;span style="color:#66d9ef">from&lt;/span> DemoUser &lt;span style="color:#66d9ef">WHERE&lt;/span> email &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">@&lt;/span>email	
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">END&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">ALTER&lt;/span> &lt;span style="color:#66d9ef">PROCEDURE&lt;/span> [dbo].[checkPassword] (&lt;span style="color:#f92672">@&lt;/span>email NVARCHAR(&lt;span style="color:#ae81ff">50&lt;/span>), &lt;span style="color:#f92672">@&lt;/span>password NVARCHAR(&lt;span style="color:#ae81ff">60&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">AS&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">BEGIN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">SELECT&lt;/span> email, password &lt;span style="color:#66d9ef">from&lt;/span> DemoUser &lt;span style="color:#66d9ef">WHERE&lt;/span> email &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">@&lt;/span>email	&lt;span style="color:#66d9ef">AND&lt;/span> password &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#f92672">@&lt;/span>password
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">--IF @@ROWCOUNT = 0 BEGIN
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#75715e">--	select &amp;#39;none&amp;#39; as email, &amp;#39;none&amp;#39; as password 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#75715e">--END 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">END&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">ALTER&lt;/span> &lt;span style="color:#66d9ef">PROCEDURE&lt;/span> [dbo].[saveUser] (&lt;span style="color:#f92672">@&lt;/span>email VARCHAR(&lt;span style="color:#ae81ff">50&lt;/span>), &lt;span style="color:#f92672">@&lt;/span>password VARCHAR(&lt;span style="color:#ae81ff">10&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">AS&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">BEGIN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#66d9ef">INSERT&lt;/span> &lt;span style="color:#66d9ef">INTO&lt;/span> DemoUser(email, password) &lt;span style="color:#66d9ef">VALUES&lt;/span> (&lt;span style="color:#f92672">@&lt;/span>email, &lt;span style="color:#f92672">@&lt;/span>password)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">END&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">ALTER&lt;/span> &lt;span style="color:#66d9ef">PROCEDURE&lt;/span> [dbo].[listUsers]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">AS&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">BEGIN&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>	&lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#f92672">*&lt;/span> &lt;span style="color:#66d9ef">from&lt;/span> DemoUser 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">END&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Ruby on Rails clone 37signals</title><link>http://blog.romheat.net/posts/2013/13_09_08_ruby_rails_clone_37s/</link><pubDate>Sun, 08 Sep 2013 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2013/13_09_08_ruby_rails_clone_37s/</guid><description>&lt;p>While I was learning Ruby on Rails, I tried to clone the 37signals website.&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/P7CbiuM-RD0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>SSH</title><link>http://blog.romheat.net/posts/2012/12_02_01_ssh/</link><pubDate>Wed, 01 Feb 2012 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2012/12_02_01_ssh/</guid><description>&lt;h1 id="ssh-related">SSH related&lt;/h1>
&lt;p>ssh-copy-id windows -&amp;gt; linux&lt;/p>
&lt;pre tabindex="0">&lt;code>cat ~/.ssh/id_rsa.pub | ssh root@agora &amp;#34;cat &amp;gt;&amp;gt; ~/.ssh/authorized_keys&amp;#34;
&lt;/code>&lt;/pre>&lt;p>github&lt;/p>
&lt;pre tabindex="0">&lt;code>ssh-keygen -t ed25519 -C &amp;#34;your_email@example.com&amp;#34;
ssh-keygen -t rsa -b 4096 -C &amp;#34;your_email@example.com&amp;#34; (old)
&lt;/code>&lt;/pre>&lt;p>github config ~/.ssh/config&lt;/p>
&lt;pre tabindex="0">&lt;code>Host github.com
 Hostname github.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/gh
&lt;/code>&lt;/pre>&lt;p>ssh-agent&lt;/p>
&lt;pre tabindex="0">&lt;code>$ eval &amp;#34;$(ssh-agent -s)&amp;#34;
&amp;gt; Agent pid 59566
&lt;/code>&lt;/pre>&lt;p>add key to agent&lt;/p>
&lt;pre tabindex="0">&lt;code>ssh-add ~/.ssh/id_ed25519 
&lt;/code>&lt;/pre>&lt;p>Windows ssh-agent&lt;/p>
&lt;pre tabindex="0">&lt;code>Set-Service ssh-agent -StartupType Manual
Start-Service ssh-agent
&lt;/code>&lt;/pre></description></item><item><title>Kalman Filter</title><link>http://blog.romheat.net/posts/2012/12_12_10_kalman_filter/</link><pubDate>Thu, 19 Jan 2012 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2012/12_12_10_kalman_filter/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/8Ed9mOSlsXg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Arduino car</title><link>http://blog.romheat.net/posts/2011/11_01_01_coche_arduino/</link><pubDate>Tue, 01 Nov 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_01_01_coche_arduino/</guid><description>&lt;p>I have been working on a project that involves controlling a car with an Arduino board. The car is made of a chassis, two motors, and a battery. The motors are connected to the Arduino board through a motor driver, which allows the Arduino to control the speed and direction of the motors using a wii nunchuck as a remote control.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;math.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;#34;Wire.h&amp;#34;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;#34;WiiChuck.h&amp;#34;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;Servo.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;RHMotor.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>WiiChuck chuck &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">WiiChuck&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> joyX &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> joyY &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define MOVING_MARGIN 50
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define ROTATE_MARGIN 50
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> left_motor_pin &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">7&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> right_motor_pin &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">6&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RHMotor &lt;span style="color:#a6e22e">motor&lt;/span>(left_motor_pin, right_motor_pin);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">setup&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">begin&lt;/span>(&lt;span style="color:#ae81ff">9600&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">flush&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Initialize chuck engine.&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> chuck.&lt;span style="color:#a6e22e">begin&lt;/span>(&lt;span style="color:#ae81ff">1000&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> chuck.&lt;span style="color:#a6e22e">update&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">delay&lt;/span>(&lt;span style="color:#ae81ff">1000&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Completed.&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Initialize motor engine.&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> motor.&lt;span style="color:#a6e22e">start&lt;/span>(&lt;span style="color:#ae81ff">300&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">delay&lt;/span>(&lt;span style="color:#ae81ff">1000&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> motor.&lt;span style="color:#a6e22e">stop&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Completed.&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">loop&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> chuck.&lt;span style="color:#a6e22e">update&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> joyX &lt;span style="color:#f92672">=&lt;/span> chuck.&lt;span style="color:#a6e22e">readJoyX&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> joyY &lt;span style="color:#f92672">=&lt;/span> chuck.&lt;span style="color:#a6e22e">readJoyY&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">//Serial.print(joyX);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#75715e">//Serial.print(&amp;#34; &amp;#34;);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#75715e">//Serial.print(joyY);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#75715e">//Serial.println();
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (&lt;span style="color:#a6e22e">millis&lt;/span>()&lt;span style="color:#f92672">%&lt;/span>&lt;span style="color:#ae81ff">1000&lt;/span> &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;.&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (chuck.&lt;span style="color:#a6e22e">zPress&lt;/span>() &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Z Pressed&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> motor.&lt;span style="color:#a6e22e">stop&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (joyY &lt;span style="color:#f92672">&amp;gt;&lt;/span> MOVING_MARGIN) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Fwd&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> motor.&lt;span style="color:#a6e22e">forward&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> } &lt;span style="color:#66d9ef">else&lt;/span> &lt;span style="color:#66d9ef">if&lt;/span> (joyY &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>&lt;span style="color:#f92672">-&lt;/span>MOVING_MARGIN) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Bwd&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> motor.&lt;span style="color:#a6e22e">backward&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (joyX &lt;span style="color:#f92672">&amp;gt;&lt;/span> ROTATE_MARGIN){
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Right&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> motor.&lt;span style="color:#a6e22e">right&lt;/span>(&lt;span style="color:#ae81ff">300&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> } &lt;span style="color:#66d9ef">else&lt;/span> &lt;span style="color:#66d9ef">if&lt;/span> (joyX &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>&lt;span style="color:#f92672">-&lt;/span>ROTATE_MARGIN) { 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Left&amp;#34;&lt;/span>); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> motor.&lt;span style="color:#a6e22e">left&lt;/span>(&lt;span style="color:#ae81ff">300&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (chuck.&lt;span style="color:#a6e22e">cPress&lt;/span>()) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> left &lt;span style="color:#f92672">=&lt;/span> motor.&lt;span style="color:#a6e22e">getLeftServo&lt;/span>().&lt;span style="color:#a6e22e">readMicroseconds&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> right &lt;span style="color:#f92672">=&lt;/span> motor.&lt;span style="color:#a6e22e">getRightServo&lt;/span>().&lt;span style="color:#a6e22e">readMicroseconds&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(left);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(right);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> joyX &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> joyY &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">delay&lt;/span>(&lt;span style="color:#ae81ff">20&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This is a sort video of the car in action:&lt;/p></description></item><item><title>Servo calibration</title><link>http://blog.romheat.net/posts/2011/11_01_01_servo_calibration/</link><pubDate>Tue, 01 Nov 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_01_01_servo_calibration/</guid><description>&lt;p>Este experimento es para tratar de calibrar los servos que se van a usar como motores.&lt;/p>
&lt;p>Este paso es importante ya que hay que encontrar el punto en el que el servo queda detenido.&lt;/p>
&lt;p>Material -Un servo de rotación continua&lt;/p>
&lt;p>Conexiones - Usar para el servo una salida con PWM&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;Servo.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define SERVO_PIN 6
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Servo servo;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> velocity;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">setup&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">begin&lt;/span>(&lt;span style="color:#ae81ff">9600&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">flush&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Initialize
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> velocity &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">attach&lt;/span>(SERVO_PIN);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">loop&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// commands
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#66d9ef">if&lt;/span> ( Serial.&lt;span style="color:#a6e22e">available&lt;/span>()) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">char&lt;/span> ch &lt;span style="color:#f92672">=&lt;/span> Serial.&lt;span style="color:#a6e22e">read&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">switch&lt;/span>(ch) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;s&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">write&lt;/span>(&lt;span style="color:#ae81ff">0&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">write&lt;/span>(velocity);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;a&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> velocity &lt;span style="color:#f92672">+=&lt;/span> &lt;span style="color:#ae81ff">10&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;d&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> velocity &lt;span style="color:#f92672">-=&lt;/span> &lt;span style="color:#ae81ff">10&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;z&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> velocity &lt;span style="color:#f92672">+=&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;x&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> velocity &lt;span style="color:#f92672">-=&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;f&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">detach&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">attach&lt;/span>(SERVO_PIN);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;q&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> velocity &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">write&lt;/span>(velocity);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;w&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> velocity &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">90&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">write&lt;/span>(velocity);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">case&lt;/span> &lt;span style="color:#e6db74">&amp;#39;e&amp;#39;&lt;/span>&lt;span style="color:#f92672">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> velocity &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">180&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> servo.&lt;span style="color:#a6e22e">write&lt;/span>(velocity);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">break&lt;/span>; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;&amp;gt; &amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(ch);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(velocity);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(servo.&lt;span style="color:#a6e22e">readMicroseconds&lt;/span>());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Resultados
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Servo A
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Stop &lt;span style="color:#ae81ff">86&lt;/span> (momento en que el servo deja de meter ruidito)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Servo B
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Stop &lt;span style="color:#ae81ff">83&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>acts_as_role</title><link>http://blog.romheat.net/posts/2011/11_07_26_act_as_role/</link><pubDate>Tue, 26 Jul 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_07_26_act_as_role/</guid><description>&lt;p>= acts_as_role&lt;/p>
&lt;p>This is a minimalist implementation of roles using a database column to store the roles in plain text. You can specify the role values and a default role that should be used when model is initialized.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ruby" data-lang="ruby">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">User&lt;/span> &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#66d9ef">ActiveRecord&lt;/span>&lt;span style="color:#f92672">::&lt;/span>&lt;span style="color:#66d9ef">Base&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> acts_as_role &lt;span style="color:#e6db74">:role&lt;/span>, &lt;span style="color:#e6db74">:values&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">%w(admin owner user)&lt;/span>, &lt;span style="color:#e6db74">:default&lt;/span> &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">:user&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">end&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Use role field to store the user roles.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ruby" data-lang="ruby">&lt;span style="display:flex;">&lt;span> user &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">User&lt;/span>&lt;span style="color:#f92672">.&lt;/span>new
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> user&lt;span style="color:#f92672">.&lt;/span>role &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#e6db74">&amp;#34;user&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> user&lt;span style="color:#f92672">.&lt;/span>has_role?(&lt;span style="color:#e6db74">:user&lt;/span>) &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">true&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Test roles using has_#{role_column.singularize}? or has_#{role_column.pluralize}?&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-ruby" data-lang="ruby">&lt;span style="display:flex;">&lt;span> user&lt;span style="color:#f92672">.&lt;/span>has_roles?(&lt;span style="color:#e6db74">:user&lt;/span>, &lt;span style="color:#e6db74">:admin&lt;/span>) &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">false&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> user&lt;span style="color:#f92672">.&lt;/span>add_roles &lt;span style="color:#e6db74">:owner&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> user&lt;span style="color:#f92672">.&lt;/span>has_roles?(&lt;span style="color:#e6db74">:user&lt;/span>, &lt;span style="color:#e6db74">:owner&lt;/span>) &lt;span style="color:#f92672">=&amp;gt;&lt;/span> &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Roles are stored using plain text&lt;/p></description></item><item><title>GPS Arduino</title><link>http://blog.romheat.net/posts/2011/11_04_05.gps_arduino/</link><pubDate>Tue, 05 Apr 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_04_05.gps_arduino/</guid><description>&lt;p>La cosa es que en cierta ocasión había abierto este GPS y me había llamado la atención los agujeritos de conexión que hay dentro, de modo que me puse a buscar información al respecto y di con esta página (de un tal xam) en la que vi una foto en donde se actualizaba el software por medio de los agujeritos…
&lt;a href="http://xamweb2.dyndns.org/wordpress/2008/02/20/fortuna-clipon-flashing/" target="_blank">http://xamweb2.dyndns.org/wordpress/2008/02/20/fortuna-clipon-flashing/&lt;/a>
&lt;a href="http://xamweb2.dyndns.org/wordpress/2007/09/20/innenleben-von-sirf2-gps-mausen-2/" target="_blank">http://xamweb2.dyndns.org/wordpress/2007/09/20/innenleben-von-sirf2-gps-mausen-2/&lt;/a>&lt;/p>
&lt;p>Información&lt;/p>
&lt;p>Mi GPS es parecido al de la primera foto pero distin del de la segunda, en vez de tener 12 agujeritos tiene 7&lt;/p></description></item><item><title>C64 Arduino</title><link>http://blog.romheat.net/posts/2011/11_04_01_c64_arduino/</link><pubDate>Fri, 01 Apr 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_04_01_c64_arduino/</guid><description>&lt;p>He intentado encontrar el código pero no hay forma ..&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Electronics/ac64_1.jpg" alt="">
&lt;img src="http://blog.romheat.net/images/Electronics/ac64_2.jpg" alt="">
&lt;img src="http://blog.romheat.net/images/Electronics/ac64_3.jpg" alt="">
&lt;img src="http://blog.romheat.net/images/Electronics/ac64_4.jpg" alt="">
&lt;img src="http://blog.romheat.net/images/Electronics/ac64_5.jpg" alt="">&lt;/p></description></item><item><title>Arduino LC24XX EPROM (paginated 2)</title><link>http://blog.romheat.net/posts/2011/11_03_04_arduino_lc24xx_paginated2/</link><pubDate>Fri, 04 Mar 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_03_04_arduino_lc24xx_paginated2/</guid><description>&lt;p>Finalmente he hecho una biblioteca I2C_eeprom.
Hay una parte que merece una explicación es el hecho de que estas memorias EEPROM tienen un modo de escritura más rápida (Page Write), en este modo podemos escribir 64bytes de golpe con lo que el proceso de escritura es considerablemente más rápido.
Este modo viene explicado en el datasheet de estas eeproms.
La cosa es que cuando he ido a implementarlo he tenido bastantes problemas.
Lo que he estado programando usa la biblioteca Wire, que a su vez usa unas funciones definidas en Wire\Utility\Twi.h (Two Wire Interface??)
Bien, tanto Wire como Twi usan un buffer interno de 32bytes, y el 24lc256 usa páginas internas de 64bytes, de modo que hay que ajustar estas dos bibliotecas para poder usar el método write_bytes_fast otra cosa importante es que este método no es capaz de saltar de dispositivo, así que estamos limitados a 32k, más que suficiente.
La segunda cosa es que los bloques de 64 bytes deben escribirse completamente, es decir que en cada operación no se pueden escribir ni más ni menos y deben escribirse en su sitio. En 32k hay 512 páginas de 64bytes.
Nota: para usar fast hay que modificar el tamaño del buffer en wire.h y twi.h pero en ambas hay que usar un buffer de 66Bytes, esto es debido a que el direccionamiento
previo son dos Bytes.&lt;/p></description></item><item><title>Arduino LC24XX EPROM</title><link>http://blog.romheat.net/posts/2011/11_03_03_arduinolc24xx_eprom/</link><pubDate>Thu, 03 Mar 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_03_03_arduinolc24xx_eprom/</guid><description>&lt;p>Código&lt;/p>
&lt;p>El código que amplia la biblioteca Wire para usar EEPROMs 24lcXX
&lt;a href="http://www.arduino.cc/playground/Code/I2CEEPROM" target="_blank">http://www.arduino.cc/playground/Code/I2CEEPROM&lt;/a>&lt;/p>
&lt;p>La biblioteca Wire
&lt;a href="http://arduino.cc/en/Reference/Wire" target="_blank">http://arduino.cc/en/Reference/Wire&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-c" data-lang="c">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;Wire.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> address, byte data )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> rdata &lt;span style="color:#f92672">=&lt;/span> data;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>(rdata);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">delay&lt;/span>(&lt;span style="color:#ae81ff">10&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_write_page&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> addressPage, byte&lt;span style="color:#f92672">*&lt;/span> data, byte length )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(addressPage &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(addressPage &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> byte c;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> ( c &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>; c &lt;span style="color:#f92672">&amp;lt;&lt;/span> length; c&lt;span style="color:#f92672">++&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>(data[c]);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>byte &lt;span style="color:#a6e22e">I2C_eeprom_read_byte&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> address )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> byte rdata &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">requestFrom&lt;/span>(deviceAddress,&lt;span style="color:#ae81ff">1&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (Wire.&lt;span style="color:#a6e22e">available&lt;/span>()) rdata &lt;span style="color:#f92672">=&lt;/span> Wire.&lt;span style="color:#a6e22e">receive&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> rdata;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_read_buffer&lt;/span>( &lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">int&lt;/span> address, byte &lt;span style="color:#f92672">*&lt;/span>buffer, &lt;span style="color:#66d9ef">int&lt;/span> length )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">beginTransmission&lt;/span>(deviceAddress);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;gt;&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">8&lt;/span>)); &lt;span style="color:#75715e">// MSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">send&lt;/span>((&lt;span style="color:#66d9ef">int&lt;/span>)(address &lt;span style="color:#f92672">&amp;amp;&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)); &lt;span style="color:#75715e">// LSB
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> Wire.&lt;span style="color:#a6e22e">endTransmission&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">requestFrom&lt;/span>(deviceAddress,length);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> c &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> ( c &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>; c &lt;span style="color:#f92672">&amp;lt;&lt;/span> length; c&lt;span style="color:#f92672">++&lt;/span> )
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (Wire.&lt;span style="color:#a6e22e">available&lt;/span>()) buffer[c] &lt;span style="color:#f92672">=&lt;/span> Wire.&lt;span style="color:#a6e22e">receive&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>} 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">//*************************************************************************************************
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">static&lt;/span> &lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> startAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> endAddress)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> value;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">int&lt;/span> lineCounter;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">char&lt;/span> textBuffer[&lt;span style="color:#ae81ff">24&lt;/span>];
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> address;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> lineCounter &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> address &lt;span style="color:#f92672">=&lt;/span> startAddress;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">while&lt;/span> (address &lt;span style="color:#f92672">&amp;lt;&lt;/span> endAddress)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">sprintf&lt;/span>(textBuffer, &lt;span style="color:#e6db74">&amp;#34;0x%05X - &amp;#34;&lt;/span>, address);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(textBuffer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">sprintf&lt;/span>(textBuffer, &lt;span style="color:#e6db74">&amp;#34;0x%05X - &amp;#34;&lt;/span>, address &lt;span style="color:#f92672">+&lt;/span> (endAddress &lt;span style="color:#f92672">-&lt;/span> startAddress));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(textBuffer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[&lt;span style="color:#ae81ff">0&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> (&lt;span style="color:#66d9ef">int&lt;/span> dumpCounter&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">0&lt;/span>; dumpCounter&lt;span style="color:#f92672">&amp;lt;&lt;/span>&lt;span style="color:#ae81ff">16&lt;/span>; dumpCounter&lt;span style="color:#f92672">++&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> value &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_read_byte&lt;/span>(deviceAddress,address);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(value,HEX);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#e6db74">&amp;#34; &amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> ((value &lt;span style="color:#f92672">&amp;gt;=&lt;/span> &lt;span style="color:#ae81ff">0x20&lt;/span>) &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> (value &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#ae81ff">0x7f&lt;/span>))
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[dumpCounter &lt;span style="color:#f92672">%&lt;/span> &lt;span style="color:#ae81ff">16&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> value;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[dumpCounter &lt;span style="color:#f92672">%&lt;/span> &lt;span style="color:#ae81ff">16&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#39;.&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> address&lt;span style="color:#f92672">++&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> textBuffer[&lt;span style="color:#ae81ff">16&lt;/span>] &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(textBuffer); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">I2C_eeprom_delete&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> deviceAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> startAddress, &lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> endAddress)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{ 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span>(&lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">long&lt;/span> address&lt;span style="color:#f92672">=&lt;/span>startAddress; address &lt;span style="color:#f92672">&amp;lt;&lt;/span> endAddress &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>; address&lt;span style="color:#f92672">++&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (&lt;span style="color:#a6e22e">I2C_eeprom_read_byte&lt;/span>(deviceAddress,address) &lt;span style="color:#f92672">!=&lt;/span> &lt;span style="color:#ae81ff">0xFF&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(address,HEX);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(deviceAddress,address,&lt;span style="color:#ae81ff">0xFF&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define EEPROM_DEVICE 0x50
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define EEPROM_INIT 0x00000
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#define EEPROM_END 0x08000
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">setup&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Wire.&lt;span style="color:#a6e22e">begin&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">begin&lt;/span>(&lt;span style="color:#ae81ff">9600&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">long&lt;/span> ms;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Deleting..&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ms &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">millis&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_delete&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_END);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">print&lt;/span>(&lt;span style="color:#a6e22e">millis&lt;/span>()&lt;span style="color:#f92672">-&lt;/span>ms);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;ms&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- Dump ---&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,EEPROM_END); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- Write at begin ---&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Writing...&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT&lt;span style="color:#f92672">+&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- Writte at end ---&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0F&lt;/span>,EEPROM_END); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Writing...&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_END,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">I2C_eeprom_write_byte&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,&lt;span style="color:#ae81ff">0xCC&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">DumpHex&lt;/span>(EEPROM_DEVICE,EEPROM_END&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0x0f&lt;/span>,EEPROM_END); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Serial.&lt;span style="color:#a6e22e">println&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;---- end ---&amp;#34;&lt;/span>); 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">//DumpHex(EEPROM_DEVICE,EEPROM_INIT,EEPROM_INIT+0x0f);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#75715e">//DumpHex(EEPROM_DEVICE,EEPROM_END-0x0f,EEPROM_END); 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">loop&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>He añadido l2C_eeprom_delete para borrar la eeprom, . Tambien he añadido un delay(5) tras cada operación de escritura debido a que si no, no me escribia bien.&lt;/p></description></item><item><title>Arduino LC24XX EPROM (paginated)</title><link>http://blog.romheat.net/posts/2011/11_03_03_arduino_lc24xx_paginated/</link><pubDate>Thu, 03 Mar 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_03_03_arduino_lc24xx_paginated/</guid><description>&lt;p>Habia algunas cosas que no me cuadraban &amp;hellip;&lt;/p>
&lt;p>Lógico.&lt;/p>
&lt;p>Con la biblioteca actual Wire y las funciones I2C_eeprom de (&lt;a href="http://www.arduino.cc/playground/Code/I2CEEPROM" target="_blank">http://www.arduino.cc/playground/Code/I2CEEPROM&lt;/a>) .. me he dado cuenta de que las direciones van en un entero (int) que en arduino, son 2 Bytes (16 bits) y con eso no podemos escribir más alla de los 64k, de modo que he cambiaod el código para usar un sistema de páginación.&lt;/p>
&lt;p>Por ejemplo con 4 24lc256 tendriamos 4 páginas de 32k lo resumo en estas dos funciones&lt;/p></description></item><item><title>Fonera ser2net</title><link>http://blog.romheat.net/posts/2011/11_02_03_fonera_ser2net/</link><pubDate>Thu, 03 Feb 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_02_03_fonera_ser2net/</guid><description>&lt;p>He tenido muchos problemas y no he conseguido hacer funcionar el ipkg correctamente en la fonera, creo que es un problema de rutas .. al final he hecho una serie de inventos.&lt;/p>
&lt;p>cada vez que me ejecuto el &amp;ldquo;ipkg update&amp;rdquo; me dan estos errores&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ERROR: File not found: //usr/local/lib/ipkg/lists/whiterussian
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> You probably want to run &lt;span style="color:#e6db74">`&lt;/span>ipkg update&lt;span style="color:#e6db74">&amp;#39;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74">ERROR: File not found: //usr/local/lib/ipkg/lists/non-free
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> You probably want to run `ipkg update&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ERROR: File not found: //usr/local/lib/ipkg/lists/backports
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> You probably want to run &lt;span style="color:#e6db74">`&lt;/span>ipkg update&lt;span style="color:#960050;background-color:#1e0010">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>en mi ddwrt no hay /usr/local/lib y no puedo crearlo&lt;/p></description></item><item><title>Fonera Kamikaze</title><link>http://blog.romheat.net/posts/2011/11_02_02_fonera_kamikaze/</link><pubDate>Wed, 02 Feb 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_02_02_fonera_kamikaze/</guid><description>&lt;p>Notas de la instalación&lt;/p>
&lt;p>descargar de &lt;a href="http://downloads.openwrt.org/kamikaze/8.09/atheros/" target="_blank">http://downloads.openwrt.org/kamikaze/8.09/atheros/&lt;/a>&lt;/p>
&lt;ul>
&lt;li>openwrt-atheros-vmlinux.lzma&lt;/li>
&lt;li>openwrt-atheros-root.squashfs&lt;/li>
&lt;/ul>
&lt;p>entrar por serie al redBoot&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>RedBoot&lt;span style="color:#f92672">(&lt;/span>tm&lt;span style="color:#f92672">)&lt;/span> bootstrap and debug environment &lt;span style="color:#f92672">[&lt;/span>ROMRAM&lt;span style="color:#f92672">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Non-certified release, version V1.00 - built 10:37:27, Dec &lt;span style="color:#ae81ff">12&lt;/span> &lt;span style="color:#ae81ff">2006&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Copyright &lt;span style="color:#f92672">(&lt;/span>C&lt;span style="color:#f92672">)&lt;/span> 2000, 2001, 2002, 2003, &lt;span style="color:#ae81ff">2004&lt;/span> Red Hat, Inc.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Board: FON1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RAM: 0x80000000-0x81000000, &lt;span style="color:#f92672">[&lt;/span>0x80040aa0-0x80fe1000&lt;span style="color:#f92672">]&lt;/span> available
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>FLASH: 0xa8000000 - 0xa87f0000, &lt;span style="color:#ae81ff">128&lt;/span> blocks of 0x00010000 bytes each.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">==&lt;/span> Executing boot script in 5.000 seconds - enter ^C to abort
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>^C
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; ip_address -l 192.168.1.254/24 -h 192.168.1.5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>IP: 192.168.1.254/255.255.255.0, Gateway: 0.0.0.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Default server: 192.168.1.5
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; fis init
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>About to initialize &lt;span style="color:#f92672">[&lt;/span>format&lt;span style="color:#f92672">]&lt;/span> FLASH image system - &lt;span style="color:#66d9ef">continue&lt;/span> &lt;span style="color:#f92672">(&lt;/span>y/n&lt;span style="color:#f92672">)&lt;/span>? y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>*** Initialize FLASH Image System
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Erase from 0xa87e0000-0xa87f0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; load -r -b %&lt;span style="color:#f92672">{&lt;/span>FREEMEMLO&lt;span style="color:#f92672">}&lt;/span> openwrt-atheros-vmlinux.lzma
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Using default protocol &lt;span style="color:#f92672">(&lt;/span>TFTP&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Raw file loaded 0x80040c00-0x80100bff, assumed entry at 0x80040c00
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; fis create -e 0x80041000 -r 0x80041000 vmlinux
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Erase from 0xa8030000-0xa80f0000: ............
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Program from 0x80040c00-0x80100c00 at 0xa8030000: ............
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Erase from 0xa87e0000-0xa87f0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; load -r -b %&lt;span style="color:#f92672">{&lt;/span>FREEMEMLO&lt;span style="color:#f92672">}&lt;/span> openwrt-atheros-root.squashfs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Using default protocol &lt;span style="color:#f92672">(&lt;/span>TFTP&lt;span style="color:#f92672">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Raw file loaded 0x80040c00-0x801e0bff, assumed entry at 0x80040c00
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; fis free
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 0xA80F0000 .. 0xA87E0000
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; fis create -l 0x6f0000 rootfs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Erase from 0xa80f0000-0xa87e0000: ..........................................................................
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Program from 0x80040c00-0x801e0c00 at 0xa80f0000: ..........................
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Erase from 0xa87e0000-0xa87f0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt; fconfig
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Run script at boot: true
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Boot script:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>.. fis load -l linux
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>.. exec
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Enter script, terminate with empty line
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt;&amp;gt; fis load -l vmlinux
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt;&amp;gt; exec
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;gt;&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Boot script timeout &lt;span style="color:#f92672">(&lt;/span>1000ms resolution&lt;span style="color:#f92672">)&lt;/span>: &lt;span style="color:#ae81ff">5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Use BOOTP &lt;span style="color:#66d9ef">for&lt;/span> network configuration: false
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Gateway IP address:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Local IP address: 192.168.1.1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Local IP address mask: 255.255.255.0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Default server IP address: 192.168.1.254
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Console baud rate: &lt;span style="color:#ae81ff">9600&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GDB connection port: &lt;span style="color:#ae81ff">9000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Force console &lt;span style="color:#66d9ef">for&lt;/span> special debug messages: false
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Network debug at boot time: false
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Update RedBoot non-volatile configuration - &lt;span style="color:#66d9ef">continue&lt;/span> &lt;span style="color:#f92672">(&lt;/span>y/n&lt;span style="color:#f92672">)&lt;/span>? y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Erase from 0xa87e0000-0xa87f0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RedBoot&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Nota*&lt;/p></description></item><item><title>Fonera Serial</title><link>http://blog.romheat.net/posts/2011/11_02_02_fonera_client/</link><pubDate>Wed, 02 Feb 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_02_02_fonera_client/</guid><description>&lt;p>Borrar la nvram&lt;/p>
&lt;p>&lt;code>mtd -r erase nvram&lt;/code>&lt;/p>
&lt;p>Configuración
Wan - disabled
STP - enabled&lt;/p>
&lt;p>Configurar el wireles con el mismo ssid que el router de casa
En security asignar los permisos
En el setup básico darle una IP de las de casa&lt;/p>
&lt;h2 id="recovery">Recovery&lt;/h2>
&lt;p>Como la fonera esta estropeada he tenido que hacer un recovery ..&lt;/p>
&lt;p>Para empezar la he conectado al arduino, así puedo usar el terminal (terraterm) para acceder al RedBoot&lt;/p></description></item><item><title>Fonera Serial</title><link>http://blog.romheat.net/posts/2011/11_02_01_fonera_serial/</link><pubDate>Tue, 01 Feb 2011 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2011/11_02_01_fonera_serial/</guid><description>&lt;p>Material - Un router la fonera.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Electronics/fonera_serial1.jpg" alt="">&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Electronics/fonera_serial2.jpg" alt="">&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Electronics/fonera_serial3.jpg" alt="">&lt;/p>
&lt;p>Código
Una vez establecidas las conexiones usando el terminal pordemos acceder al puerto serie de la fonera via el arduino.&lt;/p>
&lt;p>He instalado el openWrt Instalando openWrt Kamikaze (me ha gustado más que el ddwrt) ademas me deja casi 4Mb libres en la memoria de la fonera y he instalado algunos paquetes que me han interesado.&lt;/p>
&lt;p>Aunque he estado enredando con el el ser2net (ser2net) al final he optado por el netcat, me explico.&lt;/p></description></item><item><title>Polarshow</title><link>http://blog.romheat.net/posts/2010/10_01_29_polarshow/</link><pubDate>Fri, 29 Jan 2010 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2010/10_01_29_polarshow/</guid><description>&lt;p>Mi pequeño proyecto PolarShow ha tomado un poquito más de cuerpo, estoy ya en la versión 0.70 y prácticamente tiene ya todas las características que se pueden encontrar en polarpersonaltrainer.com&lt;/p>
&lt;p>En esta versión hay un calendario con un resumen semanal de las sesiones de entrenamiento&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/polar_070_1.png" alt="">&lt;/p>
&lt;p>También he ajustado algunos de los gráficos para que se muestren más claramente, el gráfico de sesiones por defecto muestra las 10 últimas sesiones salvo que se seleccionen otras&lt;/p></description></item><item><title>Fuzzy Logic &amp; lambda expressions</title><link>http://blog.romheat.net/posts/2010/10_01_16_fuzzy_logic/</link><pubDate>Sat, 16 Jan 2010 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2010/10_01_16_fuzzy_logic/</guid><description>&lt;p>Para un proyecto que estoy realizando, he realizado una prueba de concepto probado a aplicar lógica difusa con el fin de realizar ciertas acciones a partir de una serie de datos imprecisos.&lt;/p>
&lt;p>A la hora de expresar las reglas encargadas de modelar nuestro sistema de lógica difusa, (IF-THEN) la mayoría de los sistemas que he visto requerían de un pequeño y simple analizador sintáctico para interpretar las reglas, en este punto me he preguntado si en vez de un analizador sintáctico, podríamos usar expresiones lambda y una interfaz fluida.&lt;/p></description></item><item><title>Polar usage video</title><link>http://blog.romheat.net/posts/2010/10_01_11_polar_final/</link><pubDate>Wed, 13 Jan 2010 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2010/10_01_11_polar_final/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OThHSK1R_18?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Polar programming video</title><link>http://blog.romheat.net/posts/2010/10_01_12_polar_programming/</link><pubDate>Tue, 12 Jan 2010 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2010/10_01_12_polar_programming/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/pztlLRI9koA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Polar RS300X GUI</title><link>http://blog.romheat.net/posts/2010/10_01_10_polar_rs300x_gui/</link><pubDate>Sun, 10 Jan 2010 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2010/10_01_10_polar_rs300x_gui/</guid><description>&lt;p>Estas navidades el Olentzero, Santa Claus, Papa Noel ó uno mismo, vaya ud. a saber … me dejo un pulsometro Polar RS300x, uno de esos aparatitos que te miden las pulsaciones (para evitar que a los que nos vamos haciendo mayores nos dé un chunguito)&lt;/p>
&lt;p>La verdad es que no está nada mal, viene con el transmisor WearLink que es la cinta que te atas en el pecho que se encarga de enviar la frecuencia cardiaca al reloj, con un sensor S1 que es un podómetro que te pones en la zapatilla y una vez calibrado, mide la distancia y la velocidad, y finalmente con el FlowLink que es un dispositivo USB a través del cual puedes enviar la información a una web para (&lt;a href="https://www.polarpersonaltrainer.com" target="_blank">www.polarpersonaltrainer.com&lt;/a>) para mantener un histórico de las sesiones de entrenamiento.&lt;/p></description></item><item><title>El Futuro</title><link>http://blog.romheat.net/posts/2009/09_06_10_el_fututo/</link><pubDate>Wed, 10 Jun 2009 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2009/09_06_10_el_fututo/</guid><description>&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/cartelElfuturo.jpg" alt="">&lt;/p>
&lt;p>Después de un largo parón debido principalmente a motivos de salud volvemos a ponernos en marcha colaborando en la organización de un evento muy atractivo. Se titula &lt;strong>EL FUTURO&lt;/strong>, tachan! y tiene ponentes de lujo: &lt;a href="https://web.archive.org/web/20130627023303/http://blogs.msdn.com/davidsalgado/" target="_blank">David Salgado (Microsoft)&lt;/a> , el &lt;a href="https://web.archive.org/web/20130627023303/http://www.cesnavarra.net/cesdigital/default.aspx" target="_blank">equipo del CES (CES Microsoft)&lt;/a> y un servidor [&lt;a href="https://web.archive.org/web/20130627023303/http://www.ideseg.com/" target="_blank">Carlos Segura (navarradotnet)&lt;/a>].&lt;/p>
&lt;p>&lt;strong>Será el 23 de junio, de 10 a 15 en el salón de actos de los &lt;a href="https://web.archive.org/web/20130627023303/http://www.cesnavarra.net/Lists/Eventos%20CES/DispForm1.aspx?List=05834153%2Deec1%2D4089%2Da40e%2D5355dbd305f4&amp;amp;ID=141&amp;amp;Source=http%3A%2F%2Fwww%2Ecesnavarra%2Enet%2Fdefault%2Easpx" target="_blank">Centros Excelencia Software&lt;/a>.&lt;/strong>&lt;/p>
&lt;p>&lt;!-- raw HTML omitted -->La agenda:&lt;!-- raw HTML omitted -->&lt;/p></description></item><item><title>YACAMLQT (Yet another CAML query tool) Redux (2)</title><link>http://blog.romheat.net/posts/2009/09_04_22_yacamltool_2/</link><pubDate>Wed, 22 Apr 2009 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2009/09_04_22_yacamltool_2/</guid><description>&lt;p>Habíamos visto la parte relacionada con el Lexer el analizador morfológico. Como es obvio detrás debe haber un analizador sintáctico y semántico el &lt;a href="https://web.archive.org/web/20130904001414/http://en.wikipedia.org/wiki/Parsing" target="_blank">Parser&lt;/a>.&lt;/p>
&lt;p>El analizador sintáctico y semántico (&lt;strong>NParser&lt;/strong>) se ha implementado siguiendo el patrón interpeter, (&lt;em>seguramente sea uno de los que menos se ven&lt;/em>), el objetivo es obtener los distintos Tokens desde el Scanner y montar un árbol sintáctico (&lt;a href="https://web.archive.org/web/20130904001414/http://en.wikipedia.org/wiki/Abstract_syntax_tree" target="_blank">AST&lt;/a>) este árbol contiene Nodos (&lt;strong>ASTNodeBase&lt;/strong>) y estos nodos representan de manera abstracta y simplificada la estructura sintáctica de la consulta en SQL.&lt;/p></description></item><item><title>YACAMLQT (Yet another CAML query tool) Redux (2)</title><link>http://blog.romheat.net/posts/2009/09_04_23_yacamltool_3/</link><pubDate>Wed, 22 Apr 2009 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2009/09_04_23_yacamltool_3/</guid><description>&lt;p>Bueno, esta es la última entrega a partir de hoy el proyecto se encuentra en CodePlex (yacamlqt.codeplex.com).&lt;/p>
&lt;p>En esta última parte solo unas pequeñas notas para el usuario final.&lt;/p>
&lt;p>Bien, para usar YACAMLQT, dentro de tus proyectos, solo hay que referenciar la dll (IdeSeg.SharePoint.Caml.QueryParser.dll) y el uso sería el siguiente:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-csharp" data-lang="csharp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">try&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">var&lt;/span> parser = &lt;span style="color:#66d9ef">new&lt;/span> NParser(textTSql, &lt;span style="color:#66d9ef">new&lt;/span> ASTNodeCAMLFactory());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">var&lt;/span> generator = &lt;span style="color:#66d9ef">new&lt;/span> CodeGenerator(parser.Parse());
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> generator.Generate();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> _formatTools.FormatXml(generator.Code);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">catch&lt;/span> (ParserException ex)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> _view.Status = ex.Message;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">catch&lt;/span> (ScannerException ex)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> _view.Status = ex.Message;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Instanciamos el Parser (NParser), le pasamos la consulta en TSQL (textSql) y la factoría correspondiente a lo que queremos generar, por el momento solo está disponible la de CAML, en breve completaré la de CAML.Net; Por último inyectamos el Parser en el Generador de código, llamamos al método Generate y recogemos la consulta en CAML en generator.Code.&lt;/p></description></item><item><title>YACAMLQT (Yet another CAML query tool) Redux (1)</title><link>http://blog.romheat.net/posts/2009/09_04_21_yacamltool/</link><pubDate>Tue, 21 Apr 2009 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2009/09_04_21_yacamltool/</guid><description>&lt;p>Hace un mes, John Holliday, me pidió a ver si podíamos integrar su CAML.net con mi YACAMLQT, a la vez que ampliar mi herramienta para soportar otro tipo de consultas como adds y updates.&lt;/p>
&lt;p>YACAMLQT, es una utilidad que convierte una sentencia SQL en CAML, el lenguaje de consulta de Sharepoint. (Véase YACAMLQT, YACAMLQT2 y YACAMLQT-CAML.Net)&lt;/p>
&lt;p>Estos días entre rato bueno y rato malo, he reescrito totalmente el código de YACAMLQT, para hacerlo más sencillo (por supuesto usando TDD), en principio el objetivo ha sido emular el antiguo YACAMLQT, pero dotándolo de un diseño más sencillo y ampliable.&lt;/p></description></item><item><title>Veneno en los dedos</title><link>http://blog.romheat.net/posts/2009/09_04_16_veneno_en_ls_dedos/</link><pubDate>Thu, 16 Apr 2009 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2009/09_04_16_veneno_en_ls_dedos/</guid><description>&lt;p>En la vida de todo programador hay un “día especial”, algunos tendréis que hacer memoria, otros mucha memoria y algunos no lo recordareis pero es el día en que uno toma conciencia de sí mismo y se da cuenta de que es un “PROGRAMADOR”. (¡Qué fea palabra!… léase “CODER” please)&lt;/p>
&lt;p>No estoy hablando de ser “programador”, si no de ser “PROGRAMADOR”. Me refiero al momento en que te das cuenta de que el código es importante, que eres una máquina de tirar líneas que buscas mejorar día a día y de que el veneno de los 1s y los 0s está dentro de ti, del momento en que te das cuenta que todo es programable, de que a la silla de ruedas de tu abuelo se le puede poner un motor y programarlo, de que la gameboy de tu primo lleva un Z80 y seguro que hay alguna forma de meterle mano y…..en fin, te das cuenta de que el teclado es una extensión de tus dedos.&lt;/p></description></item><item><title>SPSRollUp details view</title><link>http://blog.romheat.net/posts/2009/09_03_15_spsrollup_details_view/</link><pubDate>Sun, 15 Mar 2009 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2009/09_03_15_spsrollup_details_view/</guid><description>&lt;p>This is a sample XSLT to show a details data view, you can connect a XSLT grid template to this view to show list details. Also you can configure the buttons to take another actions. (In this sample we are using the extended list data to get the actions urls)&lt;/p>
&lt;p>The details view show as this:&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUpDetailsView.gif" alt="">&lt;/p>
&lt;p>The XSLT is divided in three sections, the toolbar, the buttons and the rows.&lt;/p></description></item><item><title>SPSRollUp Change Grid Pager</title><link>http://blog.romheat.net/posts/2009/09_03_12_spsrollup_change_grid_pager/</link><pubDate>Thu, 12 Mar 2009 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2009/09_03_12_spsrollup_change_grid_pager/</guid><description>&lt;p>This is a small xslt snippet to change the pager style, that looks as below. This pager has buttons for first and last page, for previous and next pages and you can establish the desired number of page buttons.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUpPagerStyle.gif" alt="">&lt;/p>
&lt;p>The pager template is divided in small templates for each button, also added a variable to calc the last page. You can change the PageSize and the MaxPageLinks xslt variables.&lt;/p></description></item><item><title>SPSRollUp Chart Task Report</title><link>http://blog.romheat.net/posts/2008/08_12_16_spsrollupchart_task_report/</link><pubDate>Tue, 16 Dec 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_12_16_spsrollupchart_task_report/</guid><description>&lt;p>Using the previous sample, you can connect the crawled lists with a &lt;strong>SPSRollUpChart&lt;/strong> to show a resume graph with the status of all tasks.&lt;/p>
&lt;p>Our goal is show a chart with the status of all tasks in a specified task list. First create a SPSRollUp to select the lists as &lt;a href="https://web.archive.org/web/20130904001354/http://www.spsprofessional.com/post/SPSRollUp-Select-Distinct-Crawled-Lists.aspx" target="_blank">&lt;strong>this&lt;/strong>&lt;/a>&lt;/p>
&lt;p>Add a &lt;strong>SPSRollUpChart&lt;/strong> webpart an fill the properties with the same lists and in the fields property write “Status”, because we want get the status of the tasks.&lt;/p></description></item><item><title>SPSRollUp Select Distinct Crawled Lists</title><link>http://blog.romheat.net/posts/2008/08_12_15_spsrollup_select_distinct_crawled_lists/</link><pubDate>Mon, 15 Dec 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_12_15_spsrollup_select_distinct_crawled_lists/</guid><description>&lt;p>This is a small sample to show all crawled lists, only the lists names without any other data.&lt;/p>
&lt;p>Suppose that you want get all lists crawled under a specific site, send the list to another SPSRollUp webpart to show the lists items.&lt;/p>
&lt;p>In this example we will use any site and we wish get all tasks related lists.&lt;/p>
&lt;p>In the SPSRollUp properties, type &amp;ldquo;Tasks&amp;rdquo; in the lists properties and put &amp;ldquo;Title&amp;rdquo; in the fields property (we are not going to use the &amp;ldquo;Title&amp;rdquo; field but we need it, SPSRollUp must have almost one field in order to run the rollup)&lt;/p></description></item><item><title>SPSRollUp Task Diffs</title><link>http://blog.romheat.net/posts/2008/08_12_15_spsrollup_task_diffs/</link><pubDate>Mon, 15 Dec 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_12_15_spsrollup_task_diffs/</guid><description>&lt;p>It’s another SPSRollUp Sample that show data from a tasks list in subsites. This view permits expand and collapse data and show the startdate, the duedate and the days from startdate to duedate.&lt;/p>
&lt;p>In the SPSRollUp Properties, select the necesary tasks lists, use the fields, Title,StartDate,DueDate and select the ‘Use ISO dates’. In the XSL use the code below&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUp_TasksExpandDiff.gif" alt="">&lt;/p>
&lt;p>This example use the DateDiff function from the SPSRollUp Namespace.&lt;/p></description></item><item><title>SPSExplorer 2.5</title><link>http://blog.romheat.net/posts/2008/08_12_10_spsexplorer_2_5/</link><pubDate>Wed, 10 Dec 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_12_10_spsexplorer_2_5/</guid><description>&lt;p>We have finished a maintenance release of SPSExplorer webparts, now SPSDocumentExplorer can be used with SPSCutCopyPaste.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSDocumentExplorerCP_25.gif" alt="">&lt;/p></description></item><item><title>Good Practices</title><link>http://blog.romheat.net/posts/2008/08_11_28_good_practices/</link><pubDate>Fri, 28 Nov 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_11_28_good_practices/</guid><description>&lt;p>Cenando&lt;/p>
&lt;p>El otro día paso Unai por Pamplona y estuvimos cenando y departiendo sobre todas esas cosas frikis que nos gustan. Una suerte para los que habéis podido asistir a los cursos que ha impartido de Entity Framework y WCF.&lt;/p>
&lt;p>Durante la cena, [[degustábamos unos “Penne Arrabiata” (no seáis mal pensados, que son macarrones con tomate un poco picante) y un “Ochoa Tempranillo” (recomendado)]], hablamos de; libros, de código, de más código, de bugs, de depuración, de tecnología, del bien y del mal (lo típico), no sé si ayer hablamos de sexo (no me acuerdo, pero con el frio que hacía es posible que no :-) .&lt;/p></description></item><item><title>Books</title><link>http://blog.romheat.net/posts/2008/08_11_17_books/</link><pubDate>Mon, 17 Nov 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_11_17_books/</guid><description>&lt;p>He terminado de leer el último libro de Robert C. Martin, Clean Code.&lt;/p>
&lt;p>De Robert, había leído otros dos libros, “UML para programadores Java”, una guía práctica y sin rodeos de cómo usar UML en proyectos reales; y cuando digo práctica es que no se anda por las ramas y en ocasiones en un tono incluso “irónico” explica perfectamente cómo debemos usar UML.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/rcmartin_books.jpg" alt="">&lt;/p>
&lt;p>El otro libro es Agile Principles, Patterns, and Practices in C# (Robert C. Martin Series), que puedo decir de este libro ampliamente comentado, uno de los que se deben tener. (Ya sabéis que se lo recomiendo a todo el mundo)&lt;/p></description></item><item><title>Sharepoint Unit Testing</title><link>http://blog.romheat.net/posts/2008/08_11_03_unit_testing_2/</link><pubDate>Mon, 03 Nov 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_11_03_unit_testing_2/</guid><description>&lt;p>Como sabéis tanto Gustavo como yo llevamos tiempo realizando pruebas sobre lo que programamos en SharePoint, ambos estamos usando TypeMock como framework para
nuestros objetos Mocks que son imprescindibles a la hora de realizar pruebas para SharePoint.&lt;/p>
&lt;p>Durante los últimos meses hemos posteado sobre el tema, hemos iniciado un proyecto en CodePlex con un conjunto de clases envoltorio que pueden ayudarnos a
la hora de realizar las pruebas con TypeMock y que está a un tris de quedarse obsoleto.&lt;/p></description></item><item><title>csegRollUp 3.0</title><link>http://blog.romheat.net/posts/2008/08_09_30_csegrollup_3/</link><pubDate>Tue, 30 Sep 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_09_30_csegrollup_3/</guid><description>&lt;p>We have prepared the new SPSRollUp v3 in few days.&lt;/p>
&lt;ul>
&lt;li>Improved performance&lt;/li>
&lt;li>Now there is not necessary to apply changes twice.&lt;/li>
&lt;li>New Xslt functions. Added FormatIsoDate, LookupValue, LookupId, Replace, RootWebUrl, SourceParam, UrlParam, XmlDecode (more information in SPSNamespace functions)&lt;/li>
&lt;li>New View Lists and View Fields options to show crawled lists and fields.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUp3_ViewOptions.gif" alt="">&lt;/p>
&lt;p>Now there are two options in the configuration properties that will show a popup with the information about collected lists and fields.&lt;/p></description></item><item><title>Unit Testing</title><link>http://blog.romheat.net/posts/2008/08_09_21_unit_testing/</link><pubDate>Sun, 21 Sep 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_09_21_unit_testing/</guid><description>&lt;p>Aquí continúa el drama de Unit Test para SharePoint. Esta vez hemos reunido esfuerzos entre nosotros, Carlos Segura (&lt;a href="http://www.ideseg.com" target="_blank">http://www.ideseg.com&lt;/a> ) y Gustavo Velez (&lt;a href="http://www.gavd.net" target="_blank">http://www.gavd.net&lt;/a> ), para intentar sacar algo en claro. Programadores del mundo de SharePoint, uníos! …&lt;/p>
&lt;p>Unit Test, SharePoint y que es lo importante:&lt;/p>
&lt;p>Testeo Unitario es una técnica de programación que permite asegurar que lo que se ha programado hoy cumple las condiciones exigidas, y que las seguirá cumpliendo en el futuro, cuando se hagan modificaciones en el código fuente. Existe numerosa información al respecto, tanto en libros de texto como en internet, así que no repetiremos las bases de la técnica; en resumen, es deseable que se
cumplan algunas condiciones:&lt;/p></description></item><item><title>SPSRollUp Dropdown Recipe</title><link>http://blog.romheat.net/posts/2008/08_08_23_spsrollup_dropdown_recipe/</link><pubDate>Sat, 23 Aug 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_08_23_spsrollup_dropdown_recipe/</guid><description>&lt;p>In a blank page insert two SPSRollUp webparts.&lt;/p>
&lt;p>Edit the properties in the first webpart and select any list, in the fields property write “Title”&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUp_DropDown1.gif" alt="">&lt;/p>
&lt;p>In the XSL paste the next snippet; This snippet fills a drop down box with the titles of all crawled data&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:stylesheet&lt;/span> &lt;span style="color:#a6e22e">version=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1.0&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:xsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;lt;http://www.w3.org/1999/XSL/Transform&amp;gt;&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:sps=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;lt;http://schemas.spsprofessional.com/WebParts/SPSXSLT&amp;gt;&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">exclude-result-prefixes=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;sps&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:output&lt;/span> &lt;span style="color:#a6e22e">method=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;html&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:param&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;CurrentRow&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;script&lt;/span> &lt;span style="color:#a6e22e">type=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;text/javascript&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>function combo_onchange(oSelect)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> if(oSelect.selectedIndex != -1)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> var selected = oSelect.options[oSelect.selectedIndex].value;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;sps:EventJS(&amp;#39;Select&amp;#39;,&amp;#39;selected&amp;#39;)&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/script&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Select a value
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;select&lt;/span> &lt;span style="color:#a6e22e">id=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;a1&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;combo&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">onchange=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;javascript:combo_onchange(this);&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">class=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ms-input&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;option&lt;/span> &lt;span style="color:#a6e22e">value=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:for-each&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Rows/Row&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:sort&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Title&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:element&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;option&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:attribute&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;value&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;_RowNumber&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:attribute&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:if&lt;/span> &lt;span style="color:#a6e22e">test=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;_RowNumber=$CurrentRow&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:attribute&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;selected&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:if&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Title&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:element&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:for-each&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/select&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>When a value is selected the JavaScript embedded in the XSL “combo_onchange” send the selected value using the row provider interface.&lt;/p></description></item><item><title>SPSCopyMove WebPart</title><link>http://blog.romheat.net/posts/2008/08_07_28_spscopymove_webpart/</link><pubDate>Mon, 28 Jul 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_07_28_spscopymove_webpart/</guid><description>&lt;p>This are the preliminary screenshots of SPSListCopyMove WebPart, this webpart permits move and copy list items in a SharePoint List. In the webpart properties you only need specify the list and the view that you want show in the webpart.&lt;/p>
&lt;p>You can view a navigation tree, to navigate to any list folder quickly, and the list view that you has selected in the properties.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSListCopyPaste_Beta1.gif" alt="">&lt;/p>
&lt;p>In the context menu of the items that are showed in the view there are two new options, one to copy the item to another folder in the same list and another to move the item.&lt;/p></description></item><item><title>CAS Policies</title><link>http://blog.romheat.net/posts/2008/08_07_23_cas_policies/</link><pubDate>Wed, 23 Jul 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_07_23_cas_policies/</guid><description>&lt;p>Muchos de los desarrolladores de SharePoint, terminan optando por desplegar sus aplicaciones en el GAC, para evitar problemas de seguridad. Esta no es la manera más correcta y cada vez más administradores de sistemas, exigen que las soluciones se desplieguen en los directorios de aplicación.&lt;/p>
&lt;p>Los ensamblados que se ejecutan desde el GAC, se ejecutan bajo total confianza (Full Trust) y están disponibles para todos los servidores virtuales y todas las aplicaciones, lo cual termina siendo menos seguro si desconocemos la procedencia del ensamblado, cosa que ocurre con frecuencia.&lt;/p></description></item><item><title>SPSRollUp 2.0 Beta</title><link>http://blog.romheat.net/posts/2008/08_07_03_spsrollup_2_0_beta/</link><pubDate>Thu, 03 Jul 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_07_03_spsrollup_2_0_beta/</guid><description>&lt;p>We are developing an application for a customer using SPSRollUp (Beta 2), our customer want a site with some features that seem like BaseCamp site, BaseCamp is a well know Project Management web application.&lt;/p>
&lt;p>Using SPSRollUp our customer can aggregate data from sub-projects and show all tasks status in an only view. But he want a special view that he likes specially, this view show pending tasks whit delayed days and coming tasks with the remaining days.&lt;/p></description></item><item><title>SQL Maintenance - Sharepoint</title><link>http://blog.romheat.net/posts/2008/08_07_03_sql_maintenance/</link><pubDate>Thu, 03 Jul 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_07_03_sql_maintenance/</guid><description>&lt;p>Hace algún tiempo comente un plan de mantenimiento para las bases de datos de SharePoint 2003, básicamente para SharePoint 2007 los pasos son los mismos, solo que las bases de datos a tener en cuenta son otras.&lt;/p>
&lt;p>Tanto en MOSS como en WSS encontraremos las siguientes bases de datos:&lt;/p>
&lt;p>WSS_Content_GUID&lt;/p>
&lt;p>Esta base de datos contiene los datos de una aplicación web y las colecciones de sitios de dicha aplicación web. Todos los datos de las listas y los documentos de los sitios son almacenados en esta base de datos, en función del movimiento de esta deberemos de tener un plan de mantenimiento para la misma. Importante.&lt;/p></description></item><item><title>SPSRollUp showing flags</title><link>http://blog.romheat.net/posts/2008/08_06_13_spsrollup_showing_flags/</link><pubDate>Fri, 13 Jun 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_06_13_spsrollup_showing_flags/</guid><description>&lt;p>You can replace texts with custom images using the XSL. First you need load the desired images in the /_layouts/images of your server, after load you can use this images from XSL. Here is a little sample where the status of the tasks are replaced with flag images.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUp_PendingTasksImages.gif" alt="">&lt;/p>
&lt;p>The XSL is the same used in the Task Status example, where we are add a &lt;a href="xsl:choose">xsl:choose&lt;/a> in order to select the image:&lt;/p></description></item><item><title>SPSRollUp showing pending tasks</title><link>http://blog.romheat.net/posts/2008/08_06_12_spsrollup_showing_pending_tasks/</link><pubDate>Thu, 12 Jun 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_06_12_spsrollup_showing_pending_tasks/</guid><description>&lt;p>This is only a sample to show how we can use SPSRollUp to show the pending tasks from a list.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUp_PendingTasks.gif" alt="">&lt;/p>
&lt;p>Select a Task list in the SPSRollUp properties, and select fields Title,DueDate and Status, check the include list data to get the url where you can edit the task item.&lt;/p>
&lt;p>Below there are some CAML queries that you can use to filter the results and show only the pending tasks or the tasks for the current logged user.&lt;/p></description></item><item><title>SPSRollUpCalendar</title><link>http://blog.romheat.net/posts/2008/08_06_08.csegrollup_calendar/</link><pubDate>Sun, 08 Jun 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_06_08.csegrollup_calendar/</guid><description>&lt;p>(Beta Documentation)&lt;/p>
&lt;p>Included in version 2 of SPSRollUp there is a new webpart to roll up data and show it using the SharePoint calendar view.&lt;/p>
&lt;p>SPSRollUpCalendar has a similar operation to the SPSRollUp and SPSRollUpChart, and this means that it tracks sites and lists collecting information, the collected data is transformed using XSLT to generate XML as SPSRollUpChart does. The result XML is a description of the events to show in a calendar view.&lt;/p></description></item><item><title>csegRollup Show Picture Libraries</title><link>http://blog.romheat.net/posts/2008/08_06_04_csegrollup_show_picture_libraries/</link><pubDate>Wed, 04 Jun 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_06_04_csegrollup_show_picture_libraries/</guid><description>&lt;p>With SPSRollUp you can also aggregate content from Picture Libraries, this is a little sample that shows you how to do it.&lt;/p>
&lt;p>Select the desired lists that you want to aggregate and add the fields in the fields list, the most important field here is the EncodedAbsThumbnailUrl, this field contains the Url where the thumbnail image is stored. Other fields that we are using in the example are Title, Description and Keywords.&lt;/p></description></item><item><title>csegRollUp show recent modified files</title><link>http://blog.romheat.net/posts/2008/08_06_03_csegrollup_show_recent_files/</link><pubDate>Tue, 03 Jun 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_06_03_csegrollup_show_recent_files/</guid><description>&lt;p>A common recurrence task in SharePoint is to locate the last modified files. SPSRollUp can help to you in this task.&lt;/p>
&lt;p>You can use SPSRollUp to retrieve items from a document library as it is shown in the image.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUpRecentModifiedFiles.gif" alt="">&lt;/p>
&lt;p>You are supposed to select in the lists the document libraries in which you want crawl the results, and, in the fields you must select:&lt;/p>
&lt;p>&lt;strong>FileRef&lt;/strong>: That is the file name with full path.
&lt;strong>LinkFileName&lt;/strong>: That is the file name, without path.
&lt;strong>EncodedAbsUrl&lt;/strong>: That is the full path of the file, without file name.
&lt;strong>Modified&lt;/strong>: The date and time when the document was modified.
&lt;strong>Created&lt;/strong>: The date and time when the document was created.&lt;/p></description></item><item><title>csegRollup hide expired items</title><link>http://blog.romheat.net/posts/2008/08_05_31_spsrollup_hide_expired_items/</link><pubDate>Sat, 31 May 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_05_31_spsrollup_hide_expired_items/</guid><description>&lt;p>You can add a simple CAML query in order to hide the expired elements.&lt;/p>
&lt;p>Use:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Geq&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;FieldRef&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">”Expires”&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Value&lt;/span> &lt;span style="color:#a6e22e">Type=&lt;/span>&lt;span style="color:#e6db74">”DateTime”&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Today&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Value&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Geq&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This query show only items which Expiration date is greater or equal than today date.&lt;/p>
&lt;p>If you want use also the hour, you can use&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;Where&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Geq&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;FieldRef&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">”Expires”&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Value&lt;/span> &lt;span style="color:#a6e22e">Type=&lt;/span>&lt;span style="color:#e6db74">”DateTime”&lt;/span> &lt;span style="color:#a6e22e">IncludeTimeValue=&lt;/span>&lt;span style="color:#e6db74">”TRUE”&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Today&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Value&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Geq&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>csegRollUp DropDownList</title><link>http://blog.romheat.net/posts/2008/08_05_29_spsrollup_dropdownlist/</link><pubDate>Thu, 29 May 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_05_29_spsrollup_dropdownlist/</guid><description>&lt;p>In this sample we load a DropDown list with values from a list and we will use the selected value to filter another SPSRollUp.&lt;/p>
&lt;p>Select a List and a Site from which we load data, and fill the SPSRollUp properties.&lt;/p>
&lt;p>Use the next XSL to render the DropDown list, (we are using the field Title in the example)&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:stylesheet&lt;/span> &lt;span style="color:#a6e22e">version=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1.0&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:xsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://www.w3.org/1999/XSL/Transform&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:sps=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://schemas.spsprofessional.com/WebParts/SPSXSLT&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">exclude-result-prefixes=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;sps&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:output&lt;/span> &lt;span style="color:#a6e22e">method=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;html&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:param&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;CurrentRow&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;![CDATA[
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> &amp;lt;script type=&amp;#34;text/javascript&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> function combo_onchange(oSelect)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> if(oSelect.selectedIndex != -1)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> var selected = oSelect.options[oSelect.selectedIndex].value;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> ]]&amp;gt;&lt;/span>&lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;sps:EventJS(&amp;#39;Select&amp;#39;,&amp;#39;selected&amp;#39;)&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>&lt;span style="color:#75715e">&amp;lt;![CDATA[
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> &amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> ]]&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Select a value
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;select&lt;/span> &lt;span style="color:#a6e22e">id=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;a1&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;combo&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">onchange=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;javascript:combo_onchange(this);&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">class=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ms-input&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;option&lt;/span> &lt;span style="color:#a6e22e">value=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:for-each&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Rows/Row&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:sort&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Title&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:element&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;option&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:attribute&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;value&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;_RowNumber&amp;#34;&lt;/span>&lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:attribute&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:if&lt;/span> &lt;span style="color:#a6e22e">test=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;_RowNumber=$CurrentRow&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:attribute&lt;/span> &lt;span style="color:#a6e22e">name =&lt;/span>&lt;span style="color:#e6db74">&amp;#34;selected&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:if&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Title&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:element&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:for-each&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/select&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This XSL render the DropDown list, generating an option for each row returned in XML. When you select an option the javascript onchange event, send all row values using the provider interface.&lt;/p></description></item><item><title>Rollup a sorted table</title><link>http://blog.romheat.net/posts/2008/08_05_28_rollup_sorted_table/</link><pubDate>Wed, 28 May 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_05_28_rollup_sorted_table/</guid><description>&lt;p>This is a small trick to show the entries classic list in months and years that can be found in blogs.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SPSRollUp_Tip1.gif" alt="">&lt;/p>
&lt;p>To produce a data input such as this one we must count the number of entries occurred in a given month and year.&lt;/p>
&lt;p>This is a complex result from the point of view of an XSLT transformation, but here we will see how we can use JavaScript alongside with our transformation to produce the necessary results.&lt;/p></description></item><item><title>Action Database Connected Chart</title><link>http://blog.romheat.net/posts/2008/08_05_19_actiondatabase_connected_chart/</link><pubDate>Mon, 19 May 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_05_19_actiondatabase_connected_chart/</guid><description>&lt;p>An ActionGrid connected to an ActionViewChart to show in graph form all products and your quantity ordered by a customer&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ActionViewChartAlpha3.gif" alt="">&lt;/p>
&lt;p>ActionViewChart XML Configuration&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-16&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;SPSActionViewConfig&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;DataBase&lt;/span> &lt;span style="color:#a6e22e">ConnectionString=&lt;/span>&lt;span style="color:#e6db74">&amp;#34; ... &amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Query&lt;/span> &lt;span style="color:#a6e22e">SelectCommand=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;SELECT SUM([Order Details].Quantity) AS Quantity, 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> Products.ProductName
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> FROM [Order Details] 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> INNER JOIN Orders 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> ON [Order Details].OrderID = Orders.OrderID 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> INNER JOIN Products 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> ON [Order Details].ProductID = Products.ProductID
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> WHERE Orders.CustomerID=@CustomerID 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> GROUP BY Products.ProductName&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Filter&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Param&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;CustomerID&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">Type=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;NChar&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">Default=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Filter&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/SPSActionViewConfig&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ActionViewChart XSLT&lt;/p></description></item><item><title>Action Web Parts</title><link>http://blog.romheat.net/posts/2008/08_05_18_action_web_parts/</link><pubDate>Sun, 18 May 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_05_18_action_web_parts/</guid><description>&lt;p>First images of ActionView and ActionViewChart webparts.&lt;/p>
&lt;p>With the ActionView web part you can get data from your SQL Server Data Base and render the data using XSLT.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ActionViewAlpha.gif" alt="">&lt;/p>
&lt;p>ActionViewChart web part permits show the data using graphs.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ActionViewChartAlpha.gif" alt="">&lt;/p>
&lt;p>Both web parts are in a new package called ActionPack, that would be released at the end of June.&lt;/p></description></item><item><title>ActionView Chart</title><link>http://blog.romheat.net/posts/2008/08_05_18_action_view_chart/</link><pubDate>Sun, 18 May 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_05_18_action_view_chart/</guid><description>&lt;ul>
&lt;li>XML Configuration&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-16&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;SPSActionViewConfig&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;DataBase&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">ConnectionString=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Data Source=W2K3;Initial Catalog=Northwind; ..&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Query&lt;/span> &lt;span style="color:#a6e22e">SelectCommand=&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;SELECT CategoryID, CategoryName, SUM(ProductSales) AS Total
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> FROM [Sales by Category]
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#e6db74"> GROUP BY CategoryName, CategoryID&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/SPSActionViewConfig&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>XSLT&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:stylesheet&lt;/span> &lt;span style="color:#a6e22e">version=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1.0&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:xsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://www.w3.org/1999/XSL/Transform&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:msxsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;urn:schemas-microsoft-com:xslt&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:sps=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://schemas.spsprofessional.com/WebParts/SPSXSLT&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">exclude-result-prefixes=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;msxsl sps&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:output&lt;/span> &lt;span style="color:#a6e22e">method=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;xml&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">indent=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;yes&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;@* | node()&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!-- Graph --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;graph&lt;/span> &lt;span style="color:#a6e22e">caption=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Title&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xAxisName=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Products&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">yAxisName=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Sales&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">decimalPrecision=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">formatNumberScale=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;0&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:apply-templates&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/graph&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!-- Each row --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Row&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!-- Put here your fields --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;set&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;{CategoryName}&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">value=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;{Total}&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">color=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;{sps:GetFcColor()}&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ActionViewChartAlpha2.gif" alt="">&lt;/p></description></item><item><title>Format vs Concat</title><link>http://blog.romheat.net/posts/2008/08_05_14_format_vs_concat/</link><pubDate>Wed, 14 May 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_05_14_format_vs_concat/</guid><description>&lt;p>Esto post es para recordar simplemente que concatenar cadenas con String.Format es una mala práctica y para eso tenemos ese gran olvidado que es String.Concat.&lt;/p>
&lt;p>Y como muestra un ejemplo…&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/FormatVsConcat.gif" alt="">&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-csharp" data-lang="csharp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">void&lt;/span> Format()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> (&lt;span style="color:#66d9ef">int&lt;/span> i = &lt;span style="color:#ae81ff">0&lt;/span>; i &amp;lt; &lt;span style="color:#ae81ff">1000&lt;/span>; i++)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> String.Format(&lt;span style="color:#e6db74">&amp;#34;{0},{1}&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Test&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Test&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">void&lt;/span> Concat()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> (&lt;span style="color:#66d9ef">int&lt;/span> i = &lt;span style="color:#ae81ff">0&lt;/span>; i &amp;lt; &lt;span style="color:#ae81ff">1000&lt;/span>; i++)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> String.Concat(&lt;span style="color:#e6db74">&amp;#34;Test&amp;#34;&lt;/span>,&lt;span style="color:#e6db74">&amp;#34;,&amp;#34;&lt;/span>, &lt;span style="color:#e6db74">&amp;#34;Test&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Desarrollar no es solo picar código</title><link>http://blog.romheat.net/posts/2008/08_04_30_desarrollar_no_es_solo_picar_codigo/</link><pubDate>Wed, 30 Apr 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_04_30_desarrollar_no_es_solo_picar_codigo/</guid><description>&lt;p>Evento: Desarrollar software no es sólo picar codigo&lt;/p>
&lt;p>Día y hora:
jueves 15 de mayo de 18:30 a 21:00&lt;/p>
&lt;p>Lugar:
Centros de Excelencia Software. Salón de Actos. Polígono Industrial Mocholi, Plaza Cein. 31110 Noáin. Navarra&lt;/p>
&lt;p>Unai Zorrilla Castro. Plain Concepts. Microsoft MVP Compact Framework
(&lt;a href="http://geeks.ms/blogs/unai/Default.aspx" target="_blank">http://geeks.ms/blogs/unai/Default.aspx&lt;/a>)
Carlos Segura Sanz. NavarraDotNet. Microsoft MVP SharePoint Server
(&lt;a href="http://www.ideseg.com" target="_blank">http://www.ideseg.com&lt;/a>)&lt;/p>
&lt;p>Agenda:
18:30 – 19:00. Reunión del grupo de usuarios navarraDotNet. Orden del día: nuestros saraos
19:00 – 21:00. Desarrollar software no es sólo picar codigo. Unai Zorrilla y Carlos Segura.&lt;/p></description></item><item><title>Cut Copy Paste Beta</title><link>http://blog.romheat.net/posts/2008/08_04_21_cut_copy_paste_beta/</link><pubDate>Mon, 21 Apr 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_04_21_cut_copy_paste_beta/</guid><description>&lt;p>We are finishing the Cut/Copy/Paste version 2 with full version support.&lt;/p>
&lt;p>Copy all versions, and maintain published versions.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/CCP2_Publish1.gif" alt="">&lt;/p>
&lt;p>Also now copied files are not overwritten by default, and if a file exist a new one is created, adding a number of copy in the name.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/CCP2_Publish2.gif" alt="">&lt;/p>
&lt;p>You can download it from Downloads section. If you are interested in a beta license key, please contact with support&lt;/p></description></item><item><title>MDA for Dummies</title><link>http://blog.romheat.net/posts/2008/08_04_21_mda_for_dummies/</link><pubDate>Mon, 21 Apr 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_04_21_mda_for_dummies/</guid><description>&lt;p>El viernes tuvimos una charla en el grupo de usuarios llamada “MDA para dummies”, en la que David Marzo de Solnatec, nos explico varias cosas sobre la arquitectura dirigida por modelos, hasta aquí, todo normal y corriente, una charla bien organizada y dada por alguien que controla, ¿Qué más se puede pedir?.&lt;/p>
&lt;p>Pero lo excepcional, es que David, lleva trabajando durante años en su propio sistema MDA, sistema que permite definir modelos mediante archivos XML y ser procesados para generar código, algo similar a lo que hace CodeSmith, con la salvedad de que el modelo no parte de la Base de datos, si no que se define en un lenguaje basado en XML que el mismo ha diseñado y que pude ser extendido.&lt;/p></description></item><item><title>NavarraDotNet Agenda</title><link>http://blog.romheat.net/posts/2008/08_04_17_navarradotnet_agenda/</link><pubDate>Thu, 17 Apr 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_04_17_navarradotnet_agenda/</guid><description>&lt;p>Evento: “MDA para Dummies, continuación…”&lt;/p>
&lt;p>Día: 18 de abril 2008, hora: 18:30-20:30&lt;/p>
&lt;p>Lugar: Sistema Formacion. Plaza Pintor Paret, 1. 31008 Pamplona&lt;/p>
&lt;p>Colaboran: Sistema Formación, Masbytes, Solnatec, navarraDotNet, MSDN&lt;/p>
&lt;p>Ponente: David Marzo. Solnatec, navarraDotNet&lt;/p>
&lt;p>Agenda:
18:30 – 19:00: Reunión de navarraDotNet. Orden del día: nuestros saraos
19:00 – 20:30: “MDA para Dummies, continuación…”. David Marzo. Solnatec. (&lt;a href="http://www.solnatec.com" target="_blank">http://www.solnatec.com&lt;/a>)
Demostración de uso de una herramienta MDA en el día a día de un desarrollador.&lt;/p></description></item><item><title>Cut, Copy, Paste WebPart</title><link>http://blog.romheat.net/posts/2008/08_04_06_cut_copy_paste/</link><pubDate>Sun, 06 Apr 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_04_06_cut_copy_paste/</guid><description>&lt;p>We are working on a WebPart that will allow you to Cut, Copy, and Paste items from one list to another. This is a very useful tool for SharePoint users.&lt;/p>
&lt;p>The WebPart is still in development, but we will keep you updated on its progress. Stay tuned for more information!&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/CutCopyPaste_Video_2.gif" alt="">&lt;/p></description></item><item><title>Filter Toolbar</title><link>http://blog.romheat.net/posts/2008/08_04_05_filter_toolbar/</link><pubDate>Sat, 05 Apr 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_04_05_filter_toolbar/</guid><description>&lt;p>Filter ToolBar&lt;/p>
&lt;p>A customizable toolbar that you can configurate for TextBoxes, DropDown Lists, and DateTime Pickeres to send data to other WebParts&lt;/p>
&lt;p>&lt;img src="images/Sharepoint/FilterToolbar_WebPart.gif" alt="">&lt;/p>
&lt;p>Include Generator&lt;/p>
&lt;p>&lt;img src="images/Sharepoint/FilterToolbar_Generator.gif" alt="">&lt;/p></description></item><item><title>cc.net fx cop</title><link>http://blog.romheat.net/posts/2008/08_03_27_cc_net_fx_cop/</link><pubDate>Thu, 27 Mar 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_03_27_cc_net_fx_cop/</guid><description>&lt;p>Dentro del proceso de integración continua que uso, los proyectos que no tienen un archivo FxCop, los proceso usando una plantilla a la que añado mediante una tarea en el MsBuild, los targets necesarios para después poder ver si hay algo muy cantoso …&lt;/p>
&lt;p>La cosa es que en el resto de proyectos mantengo un archivo FxCop, en el que voy excluyendo algunas de esas cosas cantosas tras revisar el código. El problema viene cuando en el build server, se ejecuta el FxCop, y genera el informe, ya que en este informe aparecen todas las incidencias, incluidas las que yo he excluido. (grrr)&lt;/p></description></item><item><title>Action Database Ajax Picker</title><link>http://blog.romheat.net/posts/2008/08_03_05_actiondtabase_ajax_picker/</link><pubDate>Wed, 05 Mar 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_03_05_actiondtabase_ajax_picker/</guid><description>&lt;p>Some demos of the Action Database Ajax Picker:&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ADPiPickerVideo.gif" alt="">&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/Generator1.gif" alt="">&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/Generator2.gif" alt="">&lt;/p></description></item><item><title>NTML y Kerberos</title><link>http://blog.romheat.net/posts/2008/08_02_21_ntml_kerberos/</link><pubDate>Thu, 21 Feb 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_02_21_ntml_kerberos/</guid><description>&lt;p>En todas las instalaciones hay un punto crítico, esa pregunta que no tenemos muy clara y que en ocasiones va acompañada de un texto recomendando una de las opciones, por si no sabemos muy bien qué es lo que estamos haciendo. MOSS no es una excepción.&lt;/p>
&lt;p>La pregunta en cuestión llega cuando tenemos que decidir sobre la seguridad, la instalación de MOSS nos da a elegir entre sí usaremos NTLM ó Kerberos.&lt;/p></description></item><item><title>Teclear no es un sustituto de pensar</title><link>http://blog.romheat.net/posts/2008/08_02_13_teclear_no_es_un_sustituto_de_pensar/</link><pubDate>Wed, 13 Feb 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_02_13_teclear_no_es_un_sustituto_de_pensar/</guid><description>&lt;p>NavarraDotNet te invita&lt;/p>
&lt;p>Este evento esta diseñado para alumnos de 2º curso del ciclo de
Desarrollo de Aplicaciones Informáticas del I.E.S. Maria Ana Sanz, pero dado que vamos a
reflexionar sobre cuestiones de diseño orientado a objetos, cohesión, acoplamiento, refactoring, etc., creemos
que puede ser interesante también para los profesionales del desarrollo
de software.&lt;/p>
&lt;p>Además será muy enriquecedor para los chavales tener la
posibilidad de escuchar las opiniones de profesionales y expertos.&lt;/p></description></item><item><title>De la prueba al hecho xUnit</title><link>http://blog.romheat.net/posts/2008/08_02_06_de_la_prueba_al_hecho/</link><pubDate>Wed, 06 Feb 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_02_06_de_la_prueba_al_hecho/</guid><description>&lt;p>James W. Newkirk, uno de los co-autores de NUnit, trabaja desde el año pasado junto con Brad Wilson en un framework para realizar “pruebas” llamado xUnit.&lt;/p>
&lt;p>Lo he seguido con cariño y finalmente lo he adoptado para un nuevo proyecto en el que estoy trabajando, dejando mi querido MbUnit.&lt;/p>
&lt;p>El cambio de NUnit a MbUnit, lo hice debido a que este último incorporaba RowTests, posibilitando el ejecutar un mismo test usando distintos valores, lo cual acortaba el número de pruebas a escribir sustancialmente.&lt;/p></description></item><item><title>Action Database</title><link>http://blog.romheat.net/posts/2008/08_02_05_action_database/</link><pubDate>Tue, 05 Feb 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_02_05_action_database/</guid><description>&lt;p>Dear customer: We are finishing our new products. If you want to be a beta tester, send us an E-mail .&lt;/p>
&lt;p>A TRUE SQL Write-Back engine for SharePoint WSS &amp;amp; MOSS&lt;/p>
&lt;p>DEMO VIDEO – Full Database Editor (3:30 minutes)&lt;/p>
&lt;p>SPSProfessional is creating a set of webparts to connect quickly and effortlessly with your Back-End DataBase, as alternative to Business Data Catalog.&lt;/p>
&lt;p>ActionDatabaseGrid
The ActionDatabaseGrid WebPart displays data from a DataBase: with a simple ‘select command’, the configuration of columns, headers and formats as presented on screen&lt;/p></description></item><item><title>Action Database Video</title><link>http://blog.romheat.net/posts/2008/08_02_05_action_database_video/</link><pubDate>Tue, 05 Feb 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_02_05_action_database_video/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3sn8vO3GhNA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div></description></item><item><title>Cut, Copy, Paste in Document Libraries</title><link>http://blog.romheat.net/posts/2008/08_01_23_cut_copy_paste_doclibs/</link><pubDate>Wed, 23 Jan 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_01_23_cut_copy_paste_doclibs/</guid><description>&lt;p>From WSS2 I was looking for a solution to do the Document Libraries a bit more Explorer like, time ago I wrote some WebParts to try solve the problem.&lt;/p>
&lt;p>• &lt;a href="https://web.archive.org/web/20130623130533/http://www.ideseg.com/SharePointMakingDocumentLibrariesABitMoreExplorerlike.aspx" target="_blank">csegDocLibTools&lt;/a>&lt;/p>
&lt;p>After the migration to MOSS 2007 the first thing that my users asked for was where is the copy and paste feature??  And where is the explorer like functionality??  Is it a new version of SharePoint?&lt;/p>
&lt;p>What happened here… When the users have a characteristic that they are using continually it’s important that they have it in a new version otherwise the IT people are all incompetent. Yes, it’s normal. (I don´t speak here about the new office 2007 Ribbon bar, only to remember&lt;br>
that my users still hate me, as if it were my fault) &lt;/p></description></item><item><title>Aniversario NavarraDotNet</title><link>http://blog.romheat.net/posts/2008/08_01_21_aniversario_navarradotnet/</link><pubDate>Mon, 21 Jan 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_01_21_aniversario_navarradotnet/</guid><description>&lt;p>Este viernes, 25 de enero, de 16.00 a 21.00 h. en la Universidad Pública de Navarra, celebramos el primer Aniversario de &lt;strong>NavarraDotNet&lt;/strong>. &lt;/p>
&lt;p>&lt;strong>Agenda:&lt;/strong>&lt;/p>
&lt;p>16:00: &lt;strong>Microsoft Team Foundation Server&lt;/strong>.&lt;br>
          &lt;a href="https://web.archive.org/web/20130623130533/http://geeks.ms/blogs/rcorral/Default.aspx" target="_blank">Rodrigo Corral&lt;/a>, MVP Team System, PlainConcepts&lt;/p>
&lt;p>17:00: **LINQ&lt;br>
**          &lt;a href="https://web.archive.org/web/20130623130533/http://geeks.ms/blogs/unai/default.aspx" target="_blank">Unai Zorrilla&lt;/a>, MVP Compact Framework, PlainConcepts&lt;/p>
&lt;p>18:00: Merienda (gentileza de Biko2)&lt;/p>
&lt;p>18:30: &lt;strong>MDA para dummies&lt;/strong>&lt;br>
          David Marzo, &lt;a href="https://web.archive.org/web/20130623130533/http://www.solnatec.com/" target="_blank">Solnatec&lt;/a>, NavarraDotNet&lt;/p>
&lt;p>19:00: &lt;strong>The Yahoo! User Interface Library&lt;/strong> (YUI)&lt;br>
          Rubén Bernárdez, Desarrollador Net, &lt;a href="https://web.archive.org/web/20130623130533/http://www.biko2.com/index.php/es" target="_blank">Biko2&lt;/a>, NavarraDotNet&lt;/p>
&lt;p>19:30: Descanso&lt;/p>
&lt;p>19:45: &lt;strong>Aplicaciones ricas en internet&lt;/strong>, &lt;strong>Microsoft Silverlight&lt;/strong> ,&lt;br>
          J. Babuglia , Senior Software Architect, &lt;a href="https://web.archive.org/web/20130623130533/http://www.biko2.com/index.php/es" target="_blank">Biko2&lt;/a>, NavarraDotNet&lt;/p></description></item><item><title>BDC Killer WebParts</title><link>http://blog.romheat.net/posts/2008/08_01_14_bdc_killer_webparts/</link><pubDate>Mon, 14 Jan 2008 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2008/08_01_14_bdc_killer_webparts/</guid><description>&lt;p>Data integration from an outside source into SharePoint, was one of the most wished characteristics that the SharePoint 2003 users were waiting for.&lt;/p>
&lt;p>When Microsoft announced the &lt;strong>Business Data Catalog&lt;/strong>, in Microsoft Office SharePoint 2007 we all were expecting the possibility of modifying our data, but it never happened, and by the moment the BDC remains as read-only.&lt;/p>
&lt;p>On the other hand, the complexity of defining the BDC interface has always been an important barrier, so that a certain number of applications have arose to help us to define these interfaces.&lt;/p></description></item><item><title>TFS 2008</title><link>http://blog.romheat.net/posts/2007/07_12_13_tfs2008/</link><pubDate>Thu, 13 Dec 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_12_13_tfs2008/</guid><description>&lt;p>Mi buen amigo &lt;strong>&lt;a href="https://web.archive.org/web/20130623113708/http://geeks.ms/blogs/rcorral/Default.aspx" target="_blank">Rodrigo&lt;/a>&lt;/strong> me dice: “&lt;em>A ver si jubilas NUnit y te pasas a Team System&lt;/em>“. Bien, ese es mi propósito para el año entrante.&lt;/p>
&lt;p>Jubilar NUnit, CruiseControl, RedMine y mi querido Subversion. En cuanto salga Windows Server 2008, y Team System 2008 será lo primero que haga, remodelar mi pequeña y barata infraestructura.&lt;/p>
&lt;p>Como decía actualmente estoy usando lo siguiente en un modesto Pentium 4, con 512Mb de Ram que hace las labores de mini-servidor en casa.&lt;/p></description></item><item><title>Unit Testing 3</title><link>http://blog.romheat.net/posts/2007/07_12_12_unit_testing_3/</link><pubDate>Wed, 12 Dec 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_12_12_unit_testing_3/</guid><description>&lt;p>Alguien me ha recordado que empecé a escribir sobre el tema de las pruebas unitarias y finalmente no termine… o por lo menos no conté algunas de las prácticas que uso… cierto.&lt;/p>
&lt;p>&lt;strong>&lt;a href="https://web.archive.org/web/20130623113708/http://www.ideseg.com/SharePointPruebasUnitarias1.aspx" target="_blank">Parte 1&lt;/a>&lt;/strong> – &lt;strong>&lt;a href="https://web.archive.org/web/20130623113708/http://www.ideseg.com/SharePointPruebasUnitarias2.aspx" target="_blank">Parte 2&lt;/a>&lt;/strong>&lt;/p>
&lt;p>Básicamente la técnica que uso habitualmente consiste en aprovisionar un sitio de forma automática. Y ¿Cómo se aprovisiona un sitio automáticamente?, pues de la manera más sencilla posible. Usando Plantillas.&lt;/p>
&lt;p>&lt;strong>Provisión – Escenario de Pruebas&lt;/strong>&lt;/p></description></item><item><title>Mal día: Backing up is sexy</title><link>http://blog.romheat.net/posts/2007/07_12_10_mal_dia_backing_up_is_sexy/</link><pubDate>Mon, 10 Dec 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_12_10_mal_dia_backing_up_is_sexy/</guid><description>&lt;p>Buff, un mes sin escribir nada. La verdad es que le mes pasado ha sido terriblemente duro, en cuanto a trabajo se refiere, además de las dos semanas que me he pasado por el sur de España Sevilla, Córdoba, Málaga y  por Madrid, después a mi regreso me he encontrado con algún que otro desastre y un montón de trabajo acumulado.&lt;/p>
&lt;p>&lt;strong>Mal día….&lt;/strong>&lt;/p>
&lt;p>El caso es que el viernes por la noche mientras realizaba copias de seguridad de mi portátil, (je, hace un par de días volví a ver el episodio de “Sexo en New York” -Sex and the city- &lt;a href="https://web.archive.org/web/20130623113708/http://www.hbo.com/city/episode/season4/episode56.shtml" target="_blank">My Motherboard My shelf&lt;/a>)&lt;/p></description></item><item><title>CEUS3</title><link>http://blog.romheat.net/posts/2007/07_10_25_ceus3/</link><pubDate>Thu, 25 Oct 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_10_25_ceus3/</guid><description>&lt;p>El martes 23 de Octubre, se celebra en &lt;strong>Madrid&lt;/strong> la &lt;strong>tercera conferencia de usuarios de SharePoint&lt;/strong>.&lt;/p>
&lt;p>Si queréis asistir, debéis registraros con anterioridad, es imprescindible.&lt;/p>
&lt;p>Por la mañana habrá diversas ponencias comentando casos prácticos de implantación y por la tarde &lt;strong>&lt;em>sesiones técnicas&lt;/em>&lt;/strong>. La agenda completa se puede consultar en este &lt;a href="https://web.archive.org/web/20130623135522/http://www.microsoft.com/spain/office/ceus/agenda/default.mspx" target="_blank">&lt;strong>ENLACE&lt;/strong>&lt;/a>.&lt;/p>
&lt;p>10:00  Bienvenida y Situación General de SharePoint&lt;br>
10:20  Experiencia Criteria Caixa Corp&lt;br>
10:50  Experiencia Ancert – Agencia Notarial de Certificación&lt;br>
11:20  Experiencia Ministerio de la Presidencia&lt;br>
11:50  Descanso y café&lt;br>
12:20  Experiencia Caja Mediterráneo&lt;br>
12:50  Microsoft Office Sharepoint en Intenet – Web 2.0 – Silver Light&lt;br>
13:20  Búsqueda Empresarial – Search&lt;br>
13:40  Futuro de SharePoint&lt;br>
14:00  Almuerzo&lt;/p></description></item><item><title>Ruby: Enjoy.succ</title><link>http://blog.romheat.net/posts/2007/07_10_14_ruby_enjoy.succ/</link><pubDate>Sun, 14 Oct 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_10_14_ruby_enjoy.succ/</guid><description>&lt;p>Finalmente le he dedicado todo el fin de semana a &lt;strong>Ruby&lt;/strong>, y la verdad es que estoy contento, el aprendizaje es lento pero los resultados y los avances son espectaculares, rápidos y satisfactorios.&lt;/p>
&lt;p>Desde luego, es un cambio bastante fuerte, sobre todo para los que tenemos los lenguajes tipados y estrictos tan metidos en la cabeza.  Sin embargo, estos días he experimentado distintas sensaciones:&lt;/p>
&lt;p>Momentos en los que todo te parece caótico, desordenado y sucio (evidentemente, mi cabeza piensa en restricciones una y otra vez).&lt;/p></description></item><item><title>Ruby, enjoy!</title><link>http://blog.romheat.net/posts/2007/07_10_13_ruby_enjoy/</link><pubDate>Sat, 13 Oct 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_10_13_ruby_enjoy/</guid><description>&lt;p>Hace un par de días me trajeron una nueva blackberry, &lt;a href="https://web.archive.org/web/20130623135522/http://www.blackberrycurve.com/" target="_blank">la curve&lt;/a>. Ya sabéis lo que adoro yo estos cacharritos, la curve esta fenomenal, tiene cámara de fotos y gps y es mucho más pequeñita y manejable que la que tenía antes.  Ahora a su lado parece un ladrillo.&lt;/p>
&lt;p>La cosa es que llevaba tiempo pensando en hacer algún tipo de aplicación para la blackberry con java, pero lo de siempre… falta de tiempo.&lt;/p></description></item><item><title>Lenguajes como novias</title><link>http://blog.romheat.net/posts/2007/07_09_28_lenguajes_como_novias/</link><pubDate>Fri, 28 Sep 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_09_28_lenguajes_como_novias/</guid><description>&lt;p>Si, seguro que también alguno de vosotros os habéis dejado seducir por otros lenguajes de programación. Los que comenzamos a tener una edad, seguro que hemos pasado ya por varios.&lt;/p>
&lt;p>En estos momentos soy un PDP, &lt;em>Programador Dependiente de la Plataforma&lt;/em>, de modo que mis opciones en cuanto a la elección del lenguaje quedan por el momento un poquito limitadas.&lt;/p>
&lt;p>Sin embargo, adoro la programación y siempre trato de probar todo lo que puedo, antes programaba en &lt;strong>Python&lt;/strong>, muchas utilidades y desde hace algún tiempo es &lt;strong>Ruby&lt;/strong>, el que me tiene “loquito”. Me gustan y flirteo con ellos, pero a muchos de ellos nunca les puedo dedicarles todo tiempo que me gustaría.&lt;/p></description></item><item><title>Vista usará gafas</title><link>http://blog.romheat.net/posts/2007/07_09_25_vista_usar%C3%A1_gafas/</link><pubDate>Tue, 25 Sep 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_09_25_vista_usar%C3%A1_gafas/</guid><description>&lt;p>Vista usará gafas&lt;/p>
&lt;p>Así es, para ver mejor. Y en este caso no como las de Ciclope “slim” de x-men que las necesita para no andar destrozándolo todo con su poderosa visión.&lt;/p>
&lt;p>Hace unos días en &lt;a href="https://web.archive.org/web/20130623201452/http://www.thehotfix.net/" target="_blank">&lt;strong>hotfix.net&lt;/strong>&lt;/a> se hablaba de&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/windowsvistasp1.jpg" alt="">&lt;/p>
&lt;p>Sin embargo hoy era el día en que se abría la óptica para unos 10.000 cieguillos (no de fin de semana) que podrían probar la tan esperada lente correctora.&lt;/p>
&lt;p>Esa  con la que se podrá Ver  lo que no se Vio, Velocidad…  y al parecer el asunto funciona :-) yo pobre cieguito…  desde que abandone la XP (Programación eXtrema) y digo esto ya que comparado con lo que tengo aquello era eXtremo de verdad, estoy probando las maravillosas lentes correctoras y de momento puedo decir que Veo mejor.&lt;/p></description></item><item><title>Y el 7º día descansó</title><link>http://blog.romheat.net/posts/2007/07_09_25_el_7_descanso/</link><pubDate>Tue, 25 Sep 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_09_25_el_7_descanso/</guid><description>&lt;p>Y el séptimo día, descansó&lt;/p>
&lt;p>¿Pero? ¿Y si hubiera tenido que seguir un día tras otro y una semana tras otra? Más o menos lo que nos pasa a los desarrolladores, el trabajo nunca termina, con una línea completas un método, con un método una clase, con una clase un caso de uso un espacio de nombres, una biblioteca… siempre habrá detrás otra nueva clase, otra nueva biblioteca y así sin parar.&lt;/p></description></item><item><title>Unit Testing 2</title><link>http://blog.romheat.net/posts/2007/07_09_03_unit_testing_2/</link><pubDate>Mon, 03 Sep 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_09_03_unit_testing_2/</guid><description>&lt;p>Como comentaba hace unos días, realizar pruebas unitarias usando mocks, no se siempre la mejor solución, personalmente, creo que no se debe abusar de ellos y usarlos para todo.&lt;/p>
&lt;p>A continuación os cuento, como realizo mis pruebas unitarias cuando programo para SharePoint, seguramente no sean lo más idóneo del mundo, pero como dije en su día, no considero esto una ciencia sino más bien, un arte en donde cada uno utiliza aquello con lo que obtiene los mejores resultados, en cuanto a calidad. Siempre mantengo en mente el principio de que no deben llevar más trabajo que la realización del código.&lt;/p></description></item><item><title>Unit Testing</title><link>http://blog.romheat.net/posts/2007/07_08_29_unit_testing/</link><pubDate>Wed, 29 Aug 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_08_29_unit_testing/</guid><description>&lt;p>Estos días mi querido amigo Gustavo, ha estado pasando un infierno tratando de mejorar el proceso de realizar pruebas unitarias con SharePoint.&lt;/p>
&lt;p>Desde mi punto de vista las pruebas con objetos Mock funcionan (luego veremos cómo), pero creo que no siempre son lo más adecuado y esto hay que tenerlo muy en cuenta.&lt;/p>
&lt;p>Cuando desarrollamos pruebas unitarias tratamos de ver si existen diferencias entre el comportamiento esperado y el comportamiento observado. Cuando la realización de estas pruebas se convirtió en algo complejo, por la dependencia de nuestro código con sistemas externos surgieron distintas técnicas que nos permiten substituir estos sistemas e independizar nuestras pruebas.&lt;/p></description></item><item><title>Simpsonized</title><link>http://blog.romheat.net/posts/2007/07_08_21_simpsonized/</link><pubDate>Tue, 21 Aug 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_08_21_simpsonized/</guid><description>&lt;p>Pues eso, que Blanca me ha Simpsonizado y este es el resultado.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/simpsonizado.gif" alt="">&lt;/p>
&lt;p>Multiplicate por CERO.&lt;/p></description></item><item><title>Books</title><link>http://blog.romheat.net/posts/2007/07_07_31_books/</link><pubDate>Tue, 31 Jul 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_07_31_books/</guid><description>&lt;p>Bueno, Julio se termina y en breve me tomaré unos días de descanso en la soleada &lt;strong>&lt;a href="https://web.archive.org/web/20130623135440/http://www.valledeleste.es/cas/golf/index.htm" target="_blank">Almería&lt;/a>&lt;/strong>, mi mochila ahora pesa un poco menos he terminado de leer un par de libros que recomiendo.&lt;/p>
&lt;p>El primero me lo recomendó  un amigo “&lt;a href="https://web.archive.org/web/20130623135440/http://www.amazon.com/gp/product/0321245660?ie=UTF8&amp;amp;tag=codesegm-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321245660" target="_blank">Effective C#: 50 Specific Ways to Improve Your C# (Effective Software Development)&lt;/a>&lt;img src="http://blog.romheat.net/images/Sharepoint/ir.html" alt="">” y la verdad es que no está nada mal, son 50 pequeños consejos para usar mejor C#, muchos de ellos seguro que ya los conocéis, el texto que acompaña cada uno de los consejos, está bien escrito y hace la lectura agradable. El libro es del 2004 por lo que no habla mucho de C# 2.0, pero aun así merece la pena.&lt;/p></description></item><item><title>Backpack</title><link>http://blog.romheat.net/posts/2007/07_07_25_backpack/</link><pubDate>Wed, 25 Jul 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_07_25_backpack/</guid><description>&lt;p>Llevo días pensando en hacer una limpieza de la mochila, antes de ir de vacaciones. Hoy finalmente me he decidido a hacerlo, la muy …  pesa casi 8Kg&lt;/p>
&lt;p>&lt;strong>Inventario de la mochila (7,8Kg)&lt;/strong>&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/mochila_jul07.jpg" alt="">&lt;/p>
&lt;p>- 23 DVDs (MSDN / Copias / Drivers)&lt;br>
- Un juego de destornilladores de precisión&lt;br>
- Disco duro LaCie 160Gb&lt;br>
- Disco duro LaCie 80Gb (copias de seguridad)&lt;br>
- Qtek 9100&lt;br>
- Qtek S300&lt;br>
- 4 Cables Usb (discos, mp3, Qtek)&lt;br>
- Cascos de la blackberry&lt;br>
- Cascos del MP3 (mini-jack)&lt;br>
- Cascos de la Qtek 9100 (jack)&lt;br>
- Cascos de la S300 (usb)&lt;br>
- 2 Cascos malos de renfe&lt;br>
- Adaptador SD card&lt;br>
- Memory Stick 1GB (mvp)&lt;br>
- Memory Stick 2Gb (verbatim, ReadyBoost)&lt;br>
- MP3&lt;br>
- Microsoft Presenter Mouse 8000&lt;br>
- Logitech Mouse&lt;br>
- Vodafone Mobile connect (pcmcia) + antena [no me rula con Vista]&lt;br>
- Vodafone Mobile connect USB&lt;br>
- Rotuladores y lapices&lt;br>
- Libro Effective C#&lt;br>
- Libro DotnetMania cuaderno técnico nº6 (SharePoint, de Gustavo)&lt;br>
- Pilas de repuesto (4)&lt;br>
- Tarjeta SD . 1Gb&lt;br>
- Papeles varios (los recibos de gastos que no encuentras a la hora de hacer la nota)&lt;br>
- Portátil HP nw8240&lt;br>
- 2 Mecheros&lt;/p></description></item><item><title>Yet Another Caml Query Tool 2</title><link>http://blog.romheat.net/posts/2007/07_06_23_yacaml_qt_2/</link><pubDate>Sat, 23 Jun 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_06_23_yacaml_qt_2/</guid><description>&lt;p>Continuing with the YACAMLQT, I have finished the first version. Now the “toy” tool supports, “group by” and “order by”, and some expression errors are now fixed. In order to not increase the complexity of the lexer part, the clause “group by” must be write like “groupby” and the “order by” clause as “orderby”.&lt;/p>
&lt;p>To support this new clauses the first expression must begin with a “where” clause. The syntax is:&lt;/p></description></item><item><title>IBM AT</title><link>http://blog.romheat.net/posts/2007/07_06_22_ibm_at/</link><pubDate>Fri, 22 Jun 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_06_22_ibm_at/</guid><description>&lt;p>Bueno, algunos de los que me conocen ya saben que soy un &lt;strong>retro-friki,&lt;/strong> que de vez en cuando me da la venada y compro alguna estación de trabajo u ordenador viejo que me dedico a restaurar. La diversión consiste en comprar algo barato en ebay, para después juguetear con el una temporada.&lt;/p>
&lt;p>La última adquisición ha sido este &lt;strong>&lt;a href="https://web.archive.org/web/20130623174220/http://en.wikipedia.org/wiki/PC_AT" target="_blank">IBM AT&lt;/a>&lt;/strong> del año &lt;strong>84&lt;/strong>. Por aquellos años no podía pagar lo que valía (creo que unos $5000), y me conformaba con mi &lt;a href="https://web.archive.org/web/20130623174220/http://en.wikipedia.org/wiki/Commodore_64" target="_blank">&lt;strong>Commodore 64&lt;/strong>&lt;/a> que sin lugar a dudas era un gran salto desde el &lt;a href="https://web.archive.org/web/20130623174220/http://en.wikipedia.org/wiki/Zx81" target="_blank">&lt;strong>ZX81&lt;/strong>&lt;/a>, más tarde cuando pude tuve un Amstrad 1512, pero aquella estética del IBM, mazacona, ha permanecido en mi retina desde aquellos años, todavía estoy viendo el anuncio en las revistas …&lt;/p></description></item><item><title>Yet Another Caml Query Tool</title><link>http://blog.romheat.net/posts/2007/07_06_19_yacaml_qt/</link><pubDate>Tue, 19 Jun 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_06_19_yacaml_qt/</guid><description>&lt;p>Some time ago, I thought write a small tool in order to do &lt;strong>CAML&lt;/strong> queries in plain text, as in SQL “&lt;em>&lt;strong>where&lt;/strong>&lt;/em>” clause. I have the idea forgotten, I missed myself in the daily work. Yesterday doing a little modification in a program I remembered this, of course while I was writting a complex &lt;strong>CAML&lt;/strong> query.&lt;/p>
&lt;p>I named it “Yet Another CAML Query Tool” aka (&lt;strong>YACAML-QT&lt;/strong>).&lt;/p>
&lt;p>By moment it’s a little toy, you can write your queries as in a “&lt;strong>&lt;em>where&lt;/em>&lt;/strong>” clause, using the same syntax that you’d write in a SQL Sentence. It’s is more easy!!!&lt;/p></description></item><item><title>Wiki Disection 2</title><link>http://blog.romheat.net/posts/2007/07_06_04_wiki_disection_2/</link><pubDate>Mon, 04 Jun 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_06_04_wiki_disection_2/</guid><description>&lt;p>Continuando con el Wiki, hemos visto como esta construido básicamente y donde oculta el secreto de las páginas que se generan, ahora bien&lt;/p>
&lt;p>&lt;strong>¿Podemos cambiar el diseño?&lt;/strong>&lt;/p>
&lt;p>Una vez que hemos visto como esta construido, podemos de tratar de realizar una solución que implemente un comportamiento similar. Para ello deberemos hacer algunas cosas, como crear nuestra propia página de de entrada, y configurar una lista (biblioteca de documentos) para que realice el mismo comportamiento que el Wiki, eso es que llame a nuestra página personalizada para crear nuevas páginas.&lt;/p></description></item><item><title>Wiki Disection 3</title><link>http://blog.romheat.net/posts/2007/07_06_04_wiki_disection_3/</link><pubDate>Mon, 04 Jun 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_06_04_wiki_disection_3/</guid><description>&lt;p>En esta parte veremos cómo trabaja el campo especial &lt;strong>WikiField&lt;/strong>, antes de nada recordaros un webpart, que escribí el año pasado y pasó sin pena ni gloria, pero resolvía el problema de los Wikis en WSS2.&lt;/p>
&lt;p>&lt;a href="https://web.archive.org/web/20130623174220/http://www.ideseg.com/CategoryView,category,csegMiniWiki.aspx" target="_blank">csegMiniWiki&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegMiniWiki_1.gif" alt="">&lt;/p>
&lt;p>Bueno, resulta que el &lt;strong>WikiField&lt;/strong> realiza (CASI) las mismas tareas que hacía yo en el webpart que es traducir las etiquetas marcadas entre corchetes por los vínculos correspondientes.&lt;/p>
&lt;p>&lt;strong>El problema de las búsquedas&lt;/strong>&lt;/p></description></item><item><title>Wiki Disection 4</title><link>http://blog.romheat.net/posts/2007/07_06_04_wiki_disection_4/</link><pubDate>Mon, 04 Jun 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_06_04_wiki_disection_4/</guid><description>&lt;p>En está última parte de &lt;strong>Destripando el Wiki&lt;/strong>, veremos como crear un campo personalizado para cambiar el comportamiento por defecto del &lt;strong>SPFieldMultiLineText&lt;/strong> el usado por &lt;strong>WikiField,&lt;/strong> de modo que podremos cambiar el comportamiento a la hora de visualizar los enlaces a entradas que no están definidas para que estas sean redirigidas a nuestra página &lt;strong>CustomCreatePage.aspx&lt;/strong>.&lt;/p>
&lt;p>Como comentaba en anteriores posts, hemos visto que el wiki es una biblioteca de documentos que almacena páginas basadas en un tipo de contenido llamado Página Wiki que hereda de documento. Cuando se crea una nueva página la plantilla llamada &lt;strong>wkpstd.aspx&lt;/strong> se copia en la biblioteca de documentos. Vimos que podemos crear nuestra propia página &lt;strong>CreateCustomPage.aspx,&lt;/strong> para recrear el mismo comportamiento, utilizando nuestras propias plantillas y que esto funcionaba correctamente. Pero el problema llega cuando el campo &lt;strong>WikiField&lt;/strong> se renderiza, ya que mantiene un enlace a &lt;strong>CreateWebPage.aspx&lt;/strong>.&lt;/p></description></item><item><title>Wiki Disection</title><link>http://blog.romheat.net/posts/2007/07_05_30_wiki_disection/</link><pubDate>Wed, 30 May 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_05_30_wiki_disection/</guid><description>&lt;p>Mucha gente me ha preguntado sobre la posibilidad de realizar cambios en el diseño del Wiki de SharePoint. (¿Será porque en una de mis demos enseño un Fantástico Wiki?), bueno, la respuesta es… que no se puede cambiar grrrr y explicaré  porque no.&lt;/p>
&lt;p>**¿Cómo está construido el Wiki de SharePoint?&lt;br>
**&lt;br>
El wiki de sharepoint, es una biblioteca de documentos que maneja un tipo de contenido oculto WikiDocument.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/sp1wiki_1.gif" alt="">&lt;/p>
&lt;p>La definición XML&lt;/p></description></item><item><title>Palm, PDA, BlackBerry</title><link>http://blog.romheat.net/posts/2007/07_05_27_pda_blackberry/</link><pubDate>Sun, 27 May 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_05_27_pda_blackberry/</guid><description>&lt;p>Buff, han pasado muchos dispositivos móviles por estos bolsillos, desde mi primer teléfono móvil un Nokia 232 (que era una gozada) a un segundo con la entrada del GSM, el Nokia 2110, después un 8110 como el de Matrix y después un 6210 y un 6310 y un sin fin de etc..&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/nokia232.jpg" alt="">  &lt;img src="http://blog.romheat.net/images/Sharepoint/nokia2190.jpg" alt=""> &lt;img src="http://blog.romheat.net/images/Sharepoint/nokia8110_03.jpg" alt="">&lt;img src="http://blog.romheat.net/images/Sharepoint/nokia_6210.jpg" alt="">&lt;/p>
&lt;p>Más tarde tuve una Palm m500 a la vez que el teléfono lo cual me permitía tener mi agenda sincronizada con el PC, después de la Palm vino una PDA con Windows CE y más tarde un PDA con Windows CE y teléfono, que parecía la solución definitiva, pero que no lo fue.&lt;/p></description></item><item><title>Virtualizando</title><link>http://blog.romheat.net/posts/2007/07_05_20_virtualizando/</link><pubDate>Sun, 20 May 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_05_20_virtualizando/</guid><description>&lt;p>No me he podido aguantar, el viernes pasado mientras explicaba cómo realizar una extranet con SharePoint, estábamos trabajando con todos los equipos de producción virtualizados con &lt;a href="https://web.archive.org/web/20130623103246/http://www.vmware.com/products/vi/esx/" target="_blank">&lt;strong>VMWare ESX&lt;/strong>&lt;/a>.&lt;/p>
&lt;p>Realmente me quede impresionado con el rendimiento, y las capacidades del ESX. Así que ayer sábado mientras ordenaba mi despacho, me baje el ESX y la licencia de demo de la página de &lt;a href="https://web.archive.org/web/20130623103246/http://www.vmware.com/" target="_blank">&lt;strong>VMWare&lt;/strong>&lt;/a>.&lt;/p>
&lt;p>Lo instalé en apenas 15 minutos en un HP Proliant ML350 g4p con un Xeon a 3Ghz, 2Gb de Ram, y 3x72Gb en RAID 5, es un servidor que utilizo para pruebas y en donde tenía ahora algunas máquinas virtuales con VMWare Server.&lt;/p></description></item><item><title>Sharepoint 2007 Event</title><link>http://blog.romheat.net/posts/2007/07_04_11_sharepoint_event/</link><pubDate>Wed, 11 Apr 2007 00:00:00 +0200</pubDate><guid>http://blog.romheat.net/posts/2007/07_04_11_sharepoint_event/</guid><description>&lt;p>El próximo Jueves día 19 de Abril, tendremos un nuevo evento de NavarraDotNet en el Centro de Excelencia de Software (Pol. Industrial Mocholí, Plaza CEIN).&lt;/p>
&lt;p>Será una sesión de introducción a Microsoft Office Sharepoint Server 2007, así que no habrá muchos tecnicismos ni trukis, eso lo dejamos para más adelante.&lt;/p>
&lt;p>El link del registro …&lt;/p>
&lt;p>Información en NavarraDotNet&lt;/p>
&lt;p>Y como no el cartel del evento, del cual soy el autor ya que los colegas que se encargan de estos menesteres estaban de vacaciones así que me anime y este es el resultado (espero comentarios, buenos y malos :- )&lt;/p></description></item><item><title>Old asp (no net) web content work</title><link>http://blog.romheat.net/posts/2007/07_03_28_asp_webcontent/</link><pubDate>Wed, 28 Mar 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_03_28_asp_webcontent/</guid><description>&lt;p>Ayer trabajando en una presentación sobre gestión del conocimiento, para una charla que daré en breve, baje al trastero a por unos apuntes antiguos, y entre la documentación que buscaba, encontré algunos diagramas que había realizado para un proyecto durante un máster en el 2002. Era un sistema de gestión de contenidos realizado en ASP (no .net) muy divertido.&lt;/p>
&lt;p>Hoy he recordado que incluso este dominio, &lt;a href="https://www.ideseg.com" target="_blank">www.ideseg.com&lt;/a>, lo cogí pensando en albergar dicho proyecto. Como pasa el tiempo.&lt;/p></description></item><item><title>Sharepoint Dev Tip</title><link>http://blog.romheat.net/posts/2007/07_03_08_dev_tip/</link><pubDate>Thu, 08 Mar 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_03_08_dev_tip/</guid><description>&lt;p>Some days ago &lt;a href="https://web.archive.org/web/20130623110633/http://weblogs.asp.net/erobillard/default.aspx" target="_blank">Eli Robillard&lt;/a> wrote a fantastic post about &lt;a href="https://web.archive.org/web/20130623110633/http://weblogs.asp.net/erobillard/archive/2007/02/23/build-a-sharepoint-development-machine.aspx" target="_blank">how to build a sharepoint development machine&lt;/a> it’s very similar to which I use, but in a last step, I would add a tool to maintain remote sessions. A tool as Secure Shell (ssh) or Remote Shell, I use &lt;strong>&lt;a href="https://web.archive.org/web/20130623110633/http://www.microsoft.com/technet/interopmigration/unix/sfu/sfu35rsh.mspx" target="_blank">rsh&lt;/a>&lt;/strong>, because it’s easy for deployment and free, this comes with the &lt;a href="https://web.archive.org/web/20130623110633/http://www.microsoft.com/downloads/details.aspx?familyid=896C9688-601B-44F1-81A4-02878FF11778&amp;amp;displaylang=en" target="_blank">Windows Services for Unix 3.5&lt;/a>.&lt;/p>
&lt;p>Using it I can install and uninstall solutions, features and webparts from my visual studio, external tools menu. Also you can add this to the post generation commands in order to deploy and get data from application pool prior to debug. (rsh machine iisapp)&lt;/p></description></item><item><title>Tree Explorer WebPart</title><link>http://blog.romheat.net/posts/2007/07_03_07_treeexplorer/</link><pubDate>Wed, 07 Mar 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_03_07_treeexplorer/</guid><description>&lt;p>Este es un pequeño webpart, a su vez un clásico pero muy útil webpart, que nos permitirá recorrer la estructura de carpetas de una biblioteca de documentos. Por supuesto es para WSS3 y MOSS 2007&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/TreeExplorer_v1.gif" alt="">&lt;/p>
&lt;p>¿Por cierto alguien se ha fijado en este botón que ha desaparecido en WSS3 ?&lt;/p>
&lt;p>WSS2&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ListView_wss2_up.gif" alt="">&lt;/p>
&lt;p>WSS3&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ListView_wss3_noup2.gif" alt="">&lt;/p>
&lt;p>La verdad es que aún siendo un simple history.back() era un botón muy útil.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/save_16.gif" alt=""> &lt;a href="https://web.archive.org/web/20130623110633/http://oldblog.ideseg.com/content//IdeSeg.SharePoint.WebParts.TreeExplorer.zip" target="_blank">IdeSeg.SharePoint.WebParts.TreeExplorer.zip (9,19 KB)&lt;/a>&lt;/p></description></item><item><title>View Folders in document libraries</title><link>http://blog.romheat.net/posts/2007/07_03_06_view_folders/</link><pubDate>Tue, 06 Mar 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_03_06_view_folders/</guid><description>&lt;p>Si recordáis en WSS2 teníamos una opción para ver las carpetas de una biblioteca de imágenes, que por alguna misteriosa razón, no se encontraba disponible en las bibliotecas de documentos.&lt;/p>
&lt;p>En su día, con un simple truco, podíamos tener esta opción en las bibliotecas de documentos. (&lt;a href="https://web.archive.org/web/20130623110633/http://www.ideseg.com/SharePointViewAllFoldersInDocumentLibraries.aspx" target="_blank">http://www.ideseg.com/SharePointViewAllFoldersInDocumentLibraries.aspx&lt;/a>) he recordado esto esta mañana cuando me he dado cuenta de que esta opción ya no está disponible ni en las bibliotecas de imágenes ni en las bibliotecas de documentos.&lt;/p></description></item><item><title>Refactoring Session</title><link>http://blog.romheat.net/posts/2007/07_02_17_refactoring_session/</link><pubDate>Wed, 14 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_17_refactoring_session/</guid><description>&lt;p>Yesterday was the third act of NavarraDotNet, we had a session in the Public University of Navarra, where, we spoke about refactoring techniques and showing some tools as Resharper and Refactor!.&lt;/p>
&lt;p>My colleague in the session Sergio Jimenez, it demonstrated how using some of this inexpensive tools, we can improve the code quality, the development of some tasks, and how is it favorable for both, programmers and companies.&lt;/p>
&lt;p>Ayer tuvimos el tercer acto de NavarraDotNet, en la Universidad Publica de Navarra, en donde hablamos sobre técnicas de refactoring y pudimos ver algunas herramientas como Resharper y Refactor!.&lt;/p></description></item><item><title>Workflow Course 5</title><link>http://blog.romheat.net/posts/2007/07_02_14_workflow_course_5/</link><pubDate>Wed, 14 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_14_workflow_course_5/</guid><description>&lt;p>&lt;strong>5o Asalto – El servicio de planificación de tareas &amp;amp; Hosting in ASP.Net&lt;/strong>&lt;/p>
&lt;p>El servicio de planificación de tareas (&lt;strong>WorkflowSchedulerService&lt;/strong>)  es el encargado de ejecutar los distintos flujos de trabajo dentro del motor, estos pueden ser manejados de forma asíncrona, usando el servicio que WF nos proveed por defecto (&lt;strong>DefaultWorkflowSchedulerService&lt;/strong>) o de manera síncrona, usando un servicio manual (&lt;strong>ManualWorkflowSchedulerService&lt;/strong>).&lt;/p>
&lt;p>Al igual que el resto de servicios, también podemos crear nuestro propio servicio de planificación heredando de &lt;strong>WorkflowSchedulerService&lt;/strong>.&lt;/p></description></item><item><title>Workflow Course 3a</title><link>http://blog.romheat.net/posts/2007/07_02_13_workflow_course_3a/</link><pubDate>Tue, 13 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_13_workflow_course_3a/</guid><description>&lt;p>El proyecto WinHostWorkflow esta formado a su vez por dos proyectos, WinHostWorkflow contiene el motor de flujos de trabajo (WorkflowEngine.cs) y el interface de usuario (WorkflowSampleApp.cs), la carpeta ExternalDataServices, contiene los servicios de intercambio de datos del 3er asalto, (CalculatorService.cs y MessengerService.cs)&lt;/p>
&lt;p>El proyecto Workflows, contiene los interfaces para los servicios de intercambio de datos (ICalculator.cs y IMessenger.cs) así como los flujos de trabajo de ejemplo.&lt;/p>
&lt;ul>
&lt;li>WorkflowDelay.cs – Secuencial con una actividad Delay de 45seg.&lt;/li>
&lt;li>WorkflowDelay2.cs – Secuencial con una actividad Delay de 30 seg, una actividad Code que duerme el proceso un minuto y una actividad Delay de 30 seg.&lt;/li>
&lt;li>WorkflowLongWhile.cs - Seuencial con una actividad While que ejecuta una actividad Code.&lt;/li>
&lt;li>WorkflowSumNumbers.cs – Uso de parámetros, recibe dos parámetros y los suma en una actividad Code.&lt;/li>
&lt;li>WorkflowCallExternalMethod.cs - Llamada a métodos externos, usa el interface ICalculator, para realizar operaciones con parámetros.&lt;/li>
&lt;li>WorkflowHandleExternalEvent.cs - Espera recibir un mensaje, interface IMessenger, después hace una pausa y a través del mismo interface nos lo devuelve.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/wf_curso_20.gif" alt="">&lt;/p></description></item><item><title>Refactoring Event, por que tu código lo vale</title><link>http://blog.romheat.net/posts/2007/07_02_07_refactoring_event/</link><pubDate>Wed, 07 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_07_refactoring_event/</guid><description>&lt;p>Estaréis de acuerdo conmigo en que el título lo dice todo… bueno, pues este es el próximo evento de &lt;strong>&lt;a href="https://web.archive.org/web/20130623100537/http://www.navarradotnet.com/" target="_blank">NavarraDotNet&lt;/a>&lt;/strong>, esta vez el cartel, cortesía de &lt;a href="https://web.archive.org/web/20130623100537/http://www.itsasontzibaten.net/" target="_blank">&lt;strong>Ander&lt;/strong>&lt;/a> – El próximo Jueves.&lt;/p>
&lt;p>NavarraDotNet, compromiso con la belleza.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/2007-02-15-CartelWeb-Refact.jpg" alt="">&lt;/p></description></item><item><title>Workflow Course 3</title><link>http://blog.romheat.net/posts/2007/07_02_04_workflow_course_3/</link><pubDate>Sun, 04 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_04_workflow_course_3/</guid><description>&lt;p>Cuando hablo de Workflow Foundation, siempre hay una parte en la que alguien me pregunta, ¿Cómo encajo todo esto en mi forma de trabajar?, bien, WF lo que nos permite es modelar procesos (pueden ser de negocio o de lo que sea).&lt;br>
 &lt;br>
Generalmente, y desde que adoptamos los modelos de n-capas, usamos una capa para albergar lo que denominamos lógica del negocio, (yo la llamo la capa lógica, a secas) y en esa capa implementamos los distintos procesos que nuestra aplicación va a realizar. En esta capa tenemos un nivel de abstracción elevado, ya que no trabajamos directamente con los datos, si no que usamos entidades que mapean los datos. A pesar de trabajar con este nivel de abstracción, en nuestro código debemos implementar gran cantidad de servicios, como: excepciones, estados, eventos, comunicaciones, transacciones. WF, lo que nos brinda es otro nivel más de abstracción mediante el cual vamos a poder centrarnos en la resolución de los problemas, liberándonos de gran parte de la carga.&lt;/p></description></item><item><title>Workflow Course 4</title><link>http://blog.romheat.net/posts/2007/07_02_14_workflow_course_4/</link><pubDate>Sun, 04 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_14_workflow_course_4/</guid><description>&lt;p>Muchos de los procesos con los que trabajamos habitualmente, requieren de datos o eventos que llegan desde el exterior. Anteriormente, vimos como WF puede comunicarse con el mundo exterior, para recibir esos datos o eventos usando el servicio de intercambio de datos.&lt;/p>
&lt;p>En ocasiones, al igual que sucede en el mundo real, debemos esperar a que se produzcan esos datos o eventos para poder continuar realizando un trabajo. Este hecho hace que nuestros flujos de trabajo queden inactivos (Idle) mientras esperan esos datos.&lt;/p></description></item><item><title>Workflow Course 2</title><link>http://blog.romheat.net/posts/2007/07_02_03_workflow_course_2/</link><pubDate>Sat, 03 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_03_workflow_course_2/</guid><description>&lt;p>Bueno, en la &lt;a href="https://web.archive.org/web/20130623100537/http://www.ideseg.com/CursoDeWorkflowFoundation1.aspx" target="_blank">&lt;strong>primera parte&lt;/strong>&lt;/a> hemos visto en que consiste el motor de flujos de trabajo, poco a poco nos iremos introduciendo en los detalles, también hemos visto que un flujo de trabajo esta compuesto de actividades. Cuando ejecutamos un flujo de trabajo dentro del motor, la representación del mismo (&lt;strong>SequentialWorkflowActivity ó&lt;/strong>  &lt;strong>StateMachineWorkflowActivity)&lt;/strong> en ejecución es un &lt;strong>WorkflowInstance.&lt;/strong>&lt;/p>
&lt;p>Esta instancia, se crea desde el motor, Runtime.CreateWorkflow(typeof(&lt;!-- raw HTML omitted -->)) y como vimos existen distintas formas de cargar los flujos de trabajo dentro del mismo, (más adelante veremos como hacerlo de otras maneras).&lt;/p></description></item><item><title>Workflow Course 1</title><link>http://blog.romheat.net/posts/2007/07_02_01_workflow_course_1/</link><pubDate>Thu, 01 Feb 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_02_01_workflow_course_1/</guid><description>&lt;p>Tenía que impartir un curso de &lt;strong>Workflow Foundation&lt;/strong> que finalmente no voy a dar, ya que estoy muy liado con otros temas. Ayer por la noche pensé que era una pena desaprovechar todo este trabajo, más aún porque estaba deseando montar un curso distinto, me explico:&lt;/p>
&lt;p>El curso iba a consistir de 10 clases de una hora y media de duración (usease 15 horas) que no es mucho. De modo que tenía pensado lo siguiente. Una introducción de 45 minutos explicando cosas y mostrando un ejemplo práctico, ejemplo que previamente habría diseñado para la ocasión. Los 45 minutos restantes iban a ser para (30 min) que la gente trabajara con el código del ejemplo y lo enredara (mientras yo les explicaba el código). Por último, entre todos (siguiendo unas directrices 15min) iríamos añadiéndole funcionalidad al código, para ir viendo cada cosa en profundidad en la siguiente clase.&lt;/p></description></item><item><title>Wtf staff</title><link>http://blog.romheat.net/posts/2007/07_01_26_wtf_staff/</link><pubDate>Fri, 26 Jan 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_01_26_wtf_staff/</guid><description>&lt;p>Ayer tuvimos en la Universidad Pública de Navarra,  un evento de 5 horas sobre  &lt;a href="https://web.archive.org/web/20130623124824/http://www.ideseg.com/AJAXXNAWFWCFWPFWTFDoesThatMean.aspx" target="_blank">AJAX, XNA, WF, WCF y WPF&lt;/a>&lt;/p>
&lt;p>A pesar de que el tiempo no nos acompaño,  el &lt;a href="https://web.archive.org/web/20130623124824/http://blogs.msdn.com/davidsalgado/" target="_blank">guru bilbaíno&lt;/a>, le hecho un par de pelotix y se vino a Pamplona.  La asistencia no le hecho tantas pelotix así que de los 150 nos quedamos en 90, no está nada mal.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/250107_UPNA_6.jpg" alt="250107_UPNA_6.jpg">&lt;/p>
&lt;p>Lo pasamos de miedo y nos reímos un montón. Hubo buen feeling con la gente. Lo mejor es que grabamos las 5 horas en DVD así que en breve puede que las pongamos on-line.&lt;/p></description></item><item><title>Use Wfpad in your apps</title><link>http://blog.romheat.net/posts/2007/07_01_25_wfpad/</link><pubDate>Thu, 25 Jan 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_01_25_wfpad/</guid><description>&lt;p>&lt;a href="https://web.archive.org/web/20130623124824/http://blogs.msdn.com/markhsch/default.aspx" target="_blank">Mark Schmidt’s&lt;/a> a puesto una última versión del &lt;strong>&lt;a href="https://web.archive.org/web/20130623124824/http://blogs.msdn.com/markhsch/archive/2007/01/23/wfpad-for-windows-workflow-foundation-rtm.aspx" target="_blank">WFPad&lt;/a>&lt;/strong>, para Windows Workflow Foundation. Lo acabo de bajar para jugar un poquito, para los que aún no lo sepan, este ejemplo es el mejor ejemplo que hay sobre como integrar el Diseñador de flujos de trabajo dentro de nuestras aplicaciones.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/wfpad.gif" alt="">&lt;/p>
&lt;p>Justito lo he compilado y añadido mi propia biblioteca de actividades (sin ir más lejos la que he creado hoy en el evento de la UPNA, mañana pondré fotos). Podéis ver FritoDeGamba y Visor de eventos.&lt;/p></description></item><item><title>Workflow Scheduler Service</title><link>http://blog.romheat.net/posts/2007/07_01_12_workflow_ss/</link><pubDate>Fri, 12 Jan 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_01_12_workflow_ss/</guid><description>&lt;p>Una de las coas que más me cuesta explicar cuando hablo de Windows Workflow Foundation, es el dichoso AutoResetEvent.&lt;/p>
&lt;p>El AutoResetEvent, es una variable que nos ayudará en la sincronización de los distintos hilos de proceso (threads), no es más que un simple mutex (exclusión mutua), ó semáforo, que nos va a permitir es proteger ciertos datos compartidos cuando se llevan a cabo escrituras, previniendo las condiciones de carrera.&lt;/p>
&lt;p>Para entender bien este concepto, revisemos como son programadas las distintas instancias de los flujos de trabajo en el runtime.
El runtime de Workflow Foundation, tiene un servicio de temporización (scheduler) que nos va a permitir ejecutar las distintas instancias que se lleven a cabo de manera Asíncrona (por defecto) ó Síncrona (utilizando el servicio manual).&lt;/p></description></item><item><title>WTF Event</title><link>http://blog.romheat.net/posts/2007/07_01_10_wtf/</link><pubDate>Wed, 10 Jan 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_01_10_wtf/</guid><description>&lt;p>En la corta vida de NavarraDotNet vamos a por nuestro segundo Evento, donde veremos lo más representativo del Framework 3.0, aquí os dejo el cartel (a mi juicio impresionante) que Sergio Jimenez a preparado así como el link de registro y la agenda del evento.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/cartelWTF.jpg" alt="WTF Event">&lt;/p>
&lt;p>09:30 – 10:30 ASP.NET AJAX Web Development
Repasaremos la evolución en la interfaz web asíncrona desde el MSXML XMLHttpRequest hasta el momento actual y los problemas que se planteaban en el desarrollo. Veremos los nuevos controles existentes en ASP.NET y como facilitan
al desarrollador mejorar la experiencia de navegación del usuario.&lt;/p></description></item><item><title>MVP Renewal</title><link>http://blog.romheat.net/posts/2007/07_01_01_mvp_renewal/</link><pubDate>Mon, 01 Jan 2007 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2007/07_01_01_mvp_renewal/</guid><description>&lt;p>Well, today the first day of 2007,I Want to thank all the people who read this blog for this stats. Also today I received my MVP award renewal.&lt;br>
Gracias a todos los que me leéis, seguiré dando la lata &lt;img src="http://blog.romheat.net/images/Sharepoint/icon_smile.gif" alt=":-)">&lt;/p>
&lt;p>También mis felicitaciones para &lt;a href="https://web.archive.org/web/20130623124824/http://geeks.ms/blogs/mjimenez/archive/2007/01/01/comenzando-un-nuevo-a-o-con-una-renovaci-n-de-mvp.aspx" target="_blank">Miguel Jimenez&lt;/a>, &lt;a href="https://web.archive.org/web/20130623124824/http://geeks.ms/blogs/rcorral/archive/2007/01/01/reconocido-com-mvp-un-a-o-m-s.aspx" target="_blank">Rodrigo Corral&lt;/a>, &lt;a href="https://web.archive.org/web/20130623124824/http://geeks.ms/blogs/marco/archive/2007/01/02/empezando-el-a-o-como-mvp.aspx" target="_blank">Marco Amoedo&lt;/a>, &lt;a href="https://web.archive.org/web/20130623124824/http://geeks.ms/blogs/haarongonzalez/archive/2007/01/01/mvp-2007.aspx" target="_blank">Haaron Gonzalez&lt;/a>&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/Stats06_2.gif" alt="">&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/Stats06_3.gif" alt="">&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/Stats06_1.gif" alt="">&lt;/p></description></item><item><title>conv.u</title><link>http://blog.romheat.net/posts/2006/06_12_31_conv_u/</link><pubDate>Sun, 31 Dec 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_12_31_conv_u/</guid><description>&lt;p>Este será casi con seguridad mi último post del 2006, pero eso no lo puedo asegurar ya que cuando me pica la curiosidad, siento esa irresistible necesidad de saciarla. Y eso es lo que me ha ocurrido esta mañana. Como había comentado antes no había usado punteros en c# y este hecho me ha picado, de modo que he tratado ver como son manejados por el CLR.&lt;/p>
&lt;p>Bien, todo era normal hasta que he visto este código IL en donde no entendía el misterioso conv.u, el código que estaba usando es el siguiente:&lt;/p></description></item><item><title>Workflows SPDesigner 2</title><link>http://blog.romheat.net/posts/2006/06_12_08_workflows_spdesigner_2/</link><pubDate>Sat, 09 Dec 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_12_08_workflows_spdesigner_2/</guid><description>&lt;p>Para añadir una nueva actividad a nuestro SPD, lo primero que debemos hacer es comenzar un proyecto de Workflow, en concreto un Workflow Activity Library (Biblioteca de actividades para el flujo de trabajo).&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/SWA_%5B1%5D.gif" alt="">&lt;/p>
&lt;p>A partir de ese punto crearíamos nuestra actividad, para este ejemplo voy a crear una actividad que consiste en enviar un texto al visor de eventos.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-csharp" data-lang="csharp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">partial&lt;/span> &lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">LogEventViewer&lt;/span> : Activity
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">static&lt;/span> DependencyProperty TextLogProperty =
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> DependencyProperty.Register(&lt;span style="color:#960050;background-color:#1e0010">“&lt;/span>TextLog&lt;span style="color:#960050;background-color:#1e0010">”&lt;/span>, &lt;span style="color:#66d9ef">typeof&lt;/span>(&lt;span style="color:#66d9ef">string&lt;/span>), &lt;span style="color:#66d9ef">typeof&lt;/span>(LogEventViewer));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">public&lt;/span> LogEventViewer()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> InitializeComponent();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// Valor que figurará en el visor de eventos&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// &amp;lt;value&amp;gt;Texto&amp;lt;/value&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> [Description(&amp;#34;Texto que saldrá en el visor de eventos&amp;#34;)]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> [Category(&amp;#34;User&amp;#34;)]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> [Browsable(true)]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">string&lt;/span> TextLog
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">get&lt;/span> { &lt;span style="color:#66d9ef">return&lt;/span> (&lt;span style="color:#66d9ef">string&lt;/span>) GetValue(TextLogProperty); }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">set&lt;/span> { SetValue(TextLogProperty, &lt;span style="color:#66d9ef">value&lt;/span>); }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// &amp;lt;summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// Ejecución de la actividad&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// &amp;lt;/summary&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// &amp;lt;param name=”provider”&amp;gt;Contexto de ejecución de la actividad&amp;lt;/param&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">protected&lt;/span> &lt;span style="color:#66d9ef">override&lt;/span> ActivityExecutionStatus Execute(ActivityExecutionContext provider)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> EventLog eventLog = &lt;span style="color:#66d9ef">new&lt;/span> EventLog(&lt;span style="color:#960050;background-color:#1e0010">“&lt;/span>Workflow&lt;span style="color:#960050;background-color:#1e0010">”&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> eventLog.Source = &lt;span style="color:#960050;background-color:#1e0010">“&lt;/span>SharePoint Workflow&lt;span style="color:#960050;background-color:#1e0010">”&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">try&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> eventLog.WriteEntry(TextLog, EventLogEntryType.Information);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">finally&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> eventLog.Dispose();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> ActivityExecutionStatus.Closed;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Lo primero que hacemos es declarar una propiedad dependiente del flujo de trabajo llamada TextLogProperty, a través de la cual pasaremos el texto que deseamos visualizar en el visor de eventos.&lt;/p></description></item><item><title>Workflows SPDesigner 1</title><link>http://blog.romheat.net/posts/2006/06_12_08_workflows_spdesigner_1/</link><pubDate>Fri, 08 Dec 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_12_08_workflows_spdesigner_1/</guid><description>&lt;p>Sin duda una de las mejores cosas de MOSS 2007 es el nuevo SPD, y dentro de este, el diseñador de flujos de trabajo, que nos permite de forma ágil y sencilla diseñar nuestros flujos de trabajo.&lt;/p>
&lt;p>Aunque como he comentado en otras ocasiones, si deseamos realizar flujos de trabajo más complejos, o máquinas de estados debemos usar Visual Studio.&lt;/p>
&lt;p>SPD, solo nos permite realizar workflows secuenciales con las actividades que vienen predeterminadas. Sin embargo existe la posibilidad de ampliar las actividades básicas que nos encontramos dentro de SPD, con lo cual podemos extender la funcionalidad de nuestros workflows sin llegar a realizarlos completamente en Visual Studio.&lt;/p></description></item><item><title>Shared Services</title><link>http://blog.romheat.net/posts/2006/06_11_28_shared_services/</link><pubDate>Tue, 28 Nov 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_11_28_shared_services/</guid><description>&lt;p>Los proveedores de servicios compartidos (SSPs), son una de las nuevas características de MOSS 2007 que reemplaza la infraestructura de Servicios compartidos de Sharepoint 2003. Los SSPs son un conjunto de servicios que pueden ser compartidos en diferentes portales y sitios. Estos servicios son el Catalogo de datos profesionales, los servicios de Excel, las búsquedas, los perfiles de usuarios, las audiencias, y los sitios personales.&lt;/p>
&lt;p>De esta manera en MOSS 2007 podemos crear tantos SSPs como necesitemos en función del contenido que nuestros portales y sitios van a ofrecer a los usuarios, de modo que podríamos tener audiencias distintas en distintos portales, ú ofrecer distintos catálogos de datos empresariales en distintos sitios e incluso indexar fuentes de contenido distintas en cada uno de ellos de manera que los resultados de las búsquedas de cada sitio pueden ser distintas.&lt;/p></description></item><item><title>Navarra.NET</title><link>http://blog.romheat.net/posts/2006/06_11_07_navarradotnet/</link><pubDate>Tue, 07 Nov 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_11_07_navarradotnet/</guid><description>&lt;p>Hace un mes era solo una idea que me propuso Miguel Jimenez, hace tres semanas tuvimos nuestra primera reunión con 20 asistentes de 40 que se habían inscrito, y hoy hemos inaugurado nueva WEB. Desde luego el interés que ha mostrado la gente del grupo es espectacular y espero que esto sea algo más que la euforia de los comienzos.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/navarranet.gif" alt="navarranet">&lt;/p></description></item><item><title>CEUS, TTT, Code Camp</title><link>http://blog.romheat.net/posts/2006/06_10_31_ceus_ttt_code_camp/</link><pubDate>Tue, 31 Oct 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_10_31_ceus_ttt_code_camp/</guid><description>&lt;p>A TOPE, El jueves 26, se celebro la Segunda conferencia de usuarios de SharePoint, en donde intervine durante la mañana (un poco nervioso, como es lógico ya que había 300 personas y no estoy acostumbrado a una audiencia tan numerosa), quiero dar las gracias a Rafael Sanchez, jefe de producto de SharePoint y como no a los fenómenos de preventa, Oscar y Pablo por su ayuda.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/CeusFoto.jpg" alt="CEUS">&lt;/p>
&lt;p>Por la tarde di una sesión sobre SharePoint Designer, y como vi que íbamos un poco justos de tiempo me salte la presentación de powerpoint y me fui directo a la demo. Como algunos me habéis preguntado por ella intentaré realizar un webcast para que os lo podáis descargar.&lt;/p></description></item><item><title>Small Calendar Update</title><link>http://blog.romheat.net/posts/2006/06_09_26_csegsmallcalendar_update/</link><pubDate>Tue, 26 Sep 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_09_26_csegsmallcalendar_update/</guid><description>&lt;p>Do you remember?, SharePoint 2003 continues alive. This night I updated my csegSmallCalendar webpart with some new features. Now I’m designing a web site to host the NavarraDotNet.com user group and I have needed for this new features.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/smallcalendar2b.gif" alt="">
&lt;img src="http://blog.romheat.net/images/Sharepoint/smallcalendar2a.gif" alt="">&lt;/p>
&lt;p>AdjustCurrentMonth
Now you can adjust the month that the calendar is showing, If we are in September, and you adjust the calendar with a -1 value you can view August month, same with a 1 value you can view the current month +1. Now you can display more than one month adding new webparts.&lt;/p></description></item><item><title>MOSS 2007 WebParts 4</title><link>http://blog.romheat.net/posts/2006/06_08_26_moss2007_webparts_4/</link><pubDate>Sat, 26 Aug 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_08_26_moss2007_webparts_4/</guid><description>&lt;p>Otra de las mejoras importantes al usar las WebParts de ASP.Net 2.0 es la comunicación entre webparts, ya que ahora pasa a ser un proceso mucho menos tedioso que con las webparts de WSS2.&lt;/p>
&lt;p>¿Qué necesitamos?&lt;/p>
&lt;p>Lo primero que necesitamos es ver que información es la que queremos intercambiar entre las dos webparts, con las webparts de ASP Net 2.0 no tenemos las limitaciones que teníamos antes con la obligación de seleccionar uno de los interfaces que WSS2 nos proponía. Ahora disponemos de libertad para intercambiar información.&lt;/p></description></item><item><title>MOSS 2007 WebParts 3</title><link>http://blog.romheat.net/posts/2006/06_08_25_moss2007_webparts_3/</link><pubDate>Fri, 25 Aug 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_08_25_moss2007_webparts_3/</guid><description>&lt;p>Siguiendo con lo expuesto anteriormente, lo primero es revisar el formato en que se exportan las webparts basadas en Asp.Net 2.0. Una vez exportado nuestro webpart lo primero que vemos es que la extensión a cambiado, de .dwp (las webparts de WSS2) a .webpart&lt;/p>
&lt;p>También podemos observar que el espacio de nombres corresponde con la v3 &lt;!-- raw HTML omitted -->, esto solo ocurre con las webparts nativas ya que por compatibilidad las webparts que usen la api Microsoft.SharePoint.WebPart, mantendrán el formato .dwp&lt;/p></description></item><item><title>MOSS 2007 WebParts 2</title><link>http://blog.romheat.net/posts/2006/06_08_24_moss2007_webparts_2/</link><pubDate>Thu, 24 Aug 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_08_24_moss2007_webparts_2/</guid><description>&lt;p>Continuando con el post anterior, usando las características de las WebParts de ASP Net 2.0, podemos añadir propiedades a nuestras webparts para que se muestren en el area de edición.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-csharp" data-lang="csharp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">using&lt;/span> System.Web.UI;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">using&lt;/span> System.Web.UI.WebControls.WebParts;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">namespace&lt;/span> MiWebPart
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">MiPrimerWebPart&lt;/span> : WebPart
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">private&lt;/span> &lt;span style="color:#66d9ef">bool&lt;/span> bMensajeVisible = &lt;span style="color:#66d9ef">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> [Personalizable(PersonalizationScope.Shared),
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> WebBrowsable,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> WebDisplayName(&amp;#34;Ver 2º Mensaje&amp;#34;),
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#a6e22e"> WebDescription(&amp;#34;Activar desactivar el 2º mensaje&amp;#34;)]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">public&lt;/span> &lt;span style="color:#66d9ef">bool&lt;/span> MensajeVisible
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">get&lt;/span> { &lt;span style="color:#66d9ef">return&lt;/span> bMensajeVisible; }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">set&lt;/span> { bMensajeVisible = &lt;span style="color:#66d9ef">value&lt;/span>; }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">protected&lt;/span> &lt;span style="color:#66d9ef">override&lt;/span> &lt;span style="color:#66d9ef">void&lt;/span> RenderContents(HtmlTextWriter writer)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> writer.Write(&lt;span style="color:#960050;background-color:#1e0010">“&lt;/span>Hola Mundillo!!&lt;span style="color:#960050;background-color:#1e0010">”&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (bMensajeVisible)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> writer.Write(&lt;span style="color:#960050;background-color:#1e0010">“&lt;/span>&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Hola Mundillo!! Otra vez&amp;lt;/b&amp;gt;&lt;span style="color:#960050;background-color:#1e0010">”&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">base&lt;/span>.RenderContents(writer);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Para ello basta con decorar las propiedades con los atributos necesarios. En este caso el atributo Personalizable indica que el valor de la propiedad se guardará cuando este se modifique, para que una propiedad pueda marcarse con el atributo Personalizable debe cumplir lo siguiente:&lt;/p></description></item><item><title>MOSS 2007 WebParts 1</title><link>http://blog.romheat.net/posts/2006/06_08_23_moss2007_webparts_1/</link><pubDate>Wed, 23 Aug 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_08_23_moss2007_webparts_1/</guid><description>&lt;p>Como ya sabéis Windows SharePoints Services 3.0 está construido sobre ASP.Net 2.0, esto nos brinda la posibilidad de crear webparts que podríamos llamar nativas de ASP.Net 2.0 dentro de WSS3, estas webparts nativas vendrían derivados de System.Web.UI.WebControls.WebParts.WebPart.&lt;/p>
&lt;p>Para mantener la compatibilidad (como prometieron) con desarrollos anteriores y para no perder la funcionalidad de ASP.Net 2.0 la antigua API Microsoft.SharePoint.WebPartPages.WebPart que hemos venido usando con WSS2 deriva ahora de System.Web.UI.WebControls.WebParts.WebPart.&lt;/p>
&lt;p>De manera que ahora disponemos de dos alternativas a la hora de desarrollar para WSS3 siempre moviéndonos en ASP.Net 2.0.&lt;/p></description></item><item><title>cs-solver</title><link>http://blog.romheat.net/posts/2006/06_07_01_cs_solver/</link><pubDate>Sat, 01 Jul 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_07_01_cs_solver/</guid><description>&lt;p>Hace ya algún tiempo que escribí &lt;strong>CS-Solver&lt;/strong>, estos días me he propuesto convertirlo de VBA a VSTO.&lt;/p>
&lt;p>&lt;strong>CS-Solver&lt;/strong> es un add-in para Excel que escribí hace algún tiempo, ya que la calculadora que usaba tenía un sistema de resolver ecuaciones muy parecido (&lt;a href="https://web.archive.org/web/20160623040836/http://www.infinitysw.com/products/poweronefinance.html" target="_blank">&lt;strong>PowerOne finance&lt;/strong>&lt;/a>) y sin embargo resolver ecuaciones con Excel era bastante más complicado.&lt;/p>
&lt;p>&lt;strong>CS-Solver&lt;/strong> utiliza el método secante para encontrar las raíces de &lt;strong>f(x)=0&lt;/strong> en un intervalo, este no es tan rápido como el de Newton, pero si más rápido que la bisección ya que acota el intervalo y usa la aproximación más reciente.&lt;/p></description></item><item><title>csegInfoPath providers</title><link>http://blog.romheat.net/posts/2006/06_05_09_cseginfopath_providers/</link><pubDate>Tue, 09 May 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_05_09_cseginfopath_providers/</guid><description>&lt;p>You can use now the row provider to select the infopath form (rememeber that the view need contains the ID field).
The problems rendering fields with special characters is now solved.
Also I added a cell consumer interface to get the ID from other webpart as csegRollUp&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegInfoPathViewerF2.gif" alt="">&lt;/p>
&lt;p>In the properties you need add the XSL (see previous version) and the name of the form library.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegInfoPathViewerF1.gif" alt="">&lt;/p>
&lt;p>If you can´t display the infopath form, check if you can get the XML from the server using the form Url. Some users are using a WSS environment where they don´t use DNS to resolve the url where WSS is located, they are using an entry in the hosts file. In this case the server can´t resolve the Url where the form is located. To solve this issue you can add the host name in the hosts file of your server.&lt;/p></description></item><item><title>csegRollUp 3.5</title><link>http://blog.romheat.net/posts/2006/06_05_04_csegrollup_35/</link><pubDate>Thu, 04 May 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_05_04_csegrollup_35/</guid><description>&lt;p>Important NOTE: Only works in WSS2 and SPS2003&lt;/p>
&lt;p>Finally is here, many thanks to the people who have tested this version.&lt;/p>
&lt;p>From the forums:&lt;/p>
&lt;p>&amp;ldquo;I had rolled back to 3.1a with 22 individual imported spreadsheet lists rolling up to 22 individual web part pages; with 3 additional web part pages rolling up some specified fields from all 22 lists.&amp;rdquo;&lt;/p>
&lt;p>ALL 25 Rollups where present, accounted for and functioning as expected under 3.5 FINAL’s smooth control. Very, Very Smooth Transition&lt;/p></description></item><item><title>csegSmallCalendar IFilterProvider</title><link>http://blog.romheat.net/posts/2006/06_05_02_csegsmallcalendar_ifilterprovider/</link><pubDate>Tue, 02 May 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_05_02_csegsmallcalendar_ifilterprovider/</guid><description>&lt;p>Well, so many people ask to me because csegSmallCalendar has not a filter interface to use with any list. And the answer is, I forget it. Now the webpart has a FilterProvider interface to filter any list. Also you can display a “clear filter” button to clear the filter on list. As always some screenshots…&lt;/p>
&lt;p>&lt;img src="images/Sharepoint/csegSmallCalendar11a.gif" alt="">
&lt;img src="images/Sharepoint/csegSmallCalendar11b.gif" alt="">
&lt;img src="images/Sharepoint/csegSmallCalendar11c.gif" alt="">&lt;/p>
&lt;p>csegSmallCalendar1.zip (17,18 KB)&lt;/p></description></item><item><title>ajax searches</title><link>http://blog.romheat.net/posts/2006/06_04_28_ajax_searches/</link><pubDate>Fri, 28 Apr 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_04_28_ajax_searches/</guid><description>&lt;p>This is other sample of how I am using Ajax in my SharePoint environment (see Using Ajax to query Exchange Server Part 1 and Part 2) , now I’m using it to improve my searches in SPS.&lt;/p>
&lt;p>&lt;img src="images/Sharepoint/ajax_search.gif" alt="">&lt;/p>
&lt;p>First I have added a new page to make the searches, this new page runs under SPS context and it is stored under Layouts directory. This is very basic search page that look at the &amp;ldquo;DAV:displayname&amp;rdquo; field to locate files that contains a keyword in the name. This page use a query string to get the keyword and the results are written in HTML. (You can use other queries here).&lt;/p></description></item><item><title>csegSmallCalendar</title><link>http://blog.romheat.net/posts/2006/06_04_25_csegsmallcalendar/</link><pubDate>Tue, 25 Apr 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_04_25_csegsmallcalendar/</guid><description>&lt;p>I continue working in my csegSharePoint library. Meanwhile I’m doing some test with this, as this webpart that is a small calendar that show a date field from a list, and it allows select the dates witth entries, and provide a cell value with the date. You can select the List and the Field and the styles to draw the calendar.&lt;/p>
&lt;p>Also you can use this with csegRollUp to filter by dates, using [CellProvider] in queries.&lt;/p></description></item><item><title>csegNavigator</title><link>http://blog.romheat.net/posts/2006/06_04_24_csegnavigator/</link><pubDate>Mon, 24 Apr 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_04_24_csegnavigator/</guid><description>&lt;p>Estos días continuo terminando cosas, la biblioteca csegSharePoint, y el csegRollUp 3.5 (que me esta dando algún que otro problemilla). La cosa es que eh empezado a recodificar algunos de los webparts que tenía para que usen la nueva biblioteca csegSharePoint en la que estoy trabajando. Por el momento he pasado este par de webparts que me son bastante útiles.&lt;/p>
&lt;p>csegSubWebs (WSS) y csegSubAreas (SPS), son dos webparts que muestran un árbol con las subwebs y con las subareas.&lt;/p></description></item><item><title>Generic XSLT Table</title><link>http://blog.romheat.net/posts/2006/06_04_19_generic_xslt_table/</link><pubDate>Wed, 19 Apr 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_04_19_generic_xslt_table/</guid><description>&lt;p>This is a small xml stylesheet to render a generic table with the data collected from csegRollUp, and it’s ideal for debug purposes.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;utf-8&amp;#34;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:stylesheet&lt;/span> &lt;span style="color:#a6e22e">version=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:xsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://www.w3.org/1999/XSL/Transform&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Rows&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:call-template&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Tabla&amp;#34;&lt;/span>&lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!– Tabla –&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Tabla&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;table&lt;/span> &lt;span style="color:#a6e22e">width=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;100%&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">cellpading=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;tbody&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:call-template&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Cabeceras&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:for-each&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">’Row’&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;tr&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:for-each&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;.//*&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;td&lt;/span> &lt;span style="color:#a6e22e">class=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ms-vb2&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;.&amp;#34;&lt;/span>&lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/td&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:for-each&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/tr&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:for-each&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/tbody&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/table&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;!– Cabeceras de la tabla –&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Cabeceras&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;tr&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:for-each&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Row[1]/*&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;th&lt;/span> &lt;span style="color:#a6e22e">nowrap=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">class=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ms-vh2&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;name()&amp;#34;&lt;/span>&lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/th&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:for-each &amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/tr&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="images/Sharepoint/GenericTable.gif" alt="">&lt;/p></description></item><item><title>Cseg InfoPath Viewer</title><link>http://blog.romheat.net/posts/2006/06_04_07_cseginfopathviewer/</link><pubDate>Fri, 07 Apr 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_04_07_cseginfopathviewer/</guid><description>&lt;p>Finally I have a first version (0.99) of my InfoPath viewer, first I want give thanks to my friend Gustavo, for testing the preliminary version and to make as always good suggestions.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>&lt;code>stsadm -o addwppack -filename csegInfopathWebPart.cab -globalinstall (use -force if you have installed the preliminary version)&lt;/code>&lt;/p>
&lt;p>Use&lt;/p>
&lt;p>a) Create a view in your Form Library webpart containing the identifier of the list (the ID field).
b) Create a new webpart page, and insert the FormLibrary webpart and csegInfoPath webpart.
c) In the FormLibrary webpart select the view that contains the ID field, you need this view to connect with csegRollUp.
d) In the FormLibrary webpart menu select, “Conections” -&amp;gt; “Send row to” -&amp;gt; “csegInfoPathViewer” when prompt for field use the ID field.
e) Now fill the csegInfoPathViewer properties, you need specify the form library list name in the “List Name” field and put the XSL in the field XSL. (You can extract it from the infopath solution file, rename it as a .cab file and extract the xsl, then copy the content into the xsl property)
f) Now select an item and you can view the form in the csegInfoPathViewer.&lt;/p></description></item><item><title>Multiple Providers</title><link>http://blog.romheat.net/posts/2006/06_04_05_multiple_providers/</link><pubDate>Wed, 05 Apr 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_04_05_multiple_providers/</guid><description>&lt;p>El otro día comentaba el problema que había tenido con los interfaces de conexión de los webparts. Tenía un webpart consumidor conectado con dos proveedores, la primera vez que uno de los webparts proveía un valor este era aceptado por el consumidor, pero desde el momento en que el consumidor aceptaba un valor desde el segundo webpart, ya nunca más volvía a aceptar valores del primero. Evidentemente el comportamiento cambiaba si se invertía el orden de conexión. Tras dedicarle un buen rato y reproducir el problema en su esencia usando tres webparts, caí en la cuenta de que un valor null o vació también es transmitido …. de modo que ese era el problema. Así que a revisar los PartComunicationMain()&lt;/p></description></item><item><title>Excel Series</title><link>http://blog.romheat.net/posts/2006/06_03_27_excel_series/</link><pubDate>Mon, 27 Mar 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_03_27_excel_series/</guid><description>&lt;p>No se si lo he comentado alguna vez, pero en el trabajo suelo usar mucho Excel para hacer una gran variedad de cosas, en general mucho de lo que tiene que ver con el área económico financiera (lo terminamos haciendo en Excel).&lt;/p>
&lt;p>Muchas de nuestras hojas de cálculo, son planes financieros, estudios de viabilidad, análisis etc. Básicamente estas hojas planifican cobros y pagos ó gastos e ingresos, la cuestión es la planificación, en Excel podemos planificar todo aquello que queramos, es sencillo podemos establecer una fila para cada previsión a realizar y en cada columna podemos poner un periodo (ene, feb, mar…), por último en cada celda (previsión / periodo) el importe de dicha previsión.&lt;/p></description></item><item><title>MVPOpenDay</title><link>http://blog.romheat.net/posts/2006/06_03_27_mvp_openday/</link><pubDate>Mon, 27 Mar 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_03_27_mvp_openday/</guid><description>&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/openday-1.jpg" alt="MVPOpenDay">
&lt;img src="http://blog.romheat.net/images/Sharepoint/openday-2.jpg" alt="MVPOpenDay">
&lt;img src="http://blog.romheat.net/images/Sharepoint/openday-4.jpg" alt="MVPOpenDay">
&lt;img src="http://blog.romheat.net/images/Sharepoint/openday-6.jpg" alt="MVPOpenDay">&lt;/p></description></item><item><title>Send Email Toolbar</title><link>http://blog.romheat.net/posts/2006/06_03_06_send_email_toolbar/</link><pubDate>Mon, 06 Mar 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_03_06_send_email_toolbar/</guid><description>&lt;p>Hace ya algún tiempo Mark Bower, explicaba como personalizar el menú de opciones con un bonito ejemplo para enviar el enlace de un documento por correo electrónico. Este fin de semana he tratado de mejorarlo, ya que enviar un enlace está muy bien cuando se envían correos a personas de la misma empresa, evitando duplicar información. Sin embargo si queremos enviar dicho documento a una persona del exterior, tenemos que salvar primero el documento en el escritorio para después adjuntarlo a un mensaje.&lt;/p></description></item><item><title>csEG Library</title><link>http://blog.romheat.net/posts/2006/06_03_01_cseglibrary/</link><pubDate>Wed, 01 Mar 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_03_01_cseglibrary/</guid><description>&lt;p>Estos días he estado trabajando en una nueva biblioteca de clases para SharePoint, bueno, en parte nueva y en parte adaptando a mis necesidades algunas de las clases del SDK, (¡Que grande es la POO!). Aquí como siempre existirán discrepancias en cuanto al diseño, allí donde se reúnan programadores siempre habrá más puristas y otros más prácticos. Yo me decanto por los segundos. Con esto no quiero decir que estropee la magia de una clase introduciendo metodusHorribilis, pero sí que soy partidario de subclasear aquello que dispone de una interfaz poco agradable, creando una fachada más práctica y coherente con la aplicación que se está desarrollando, de este modo más adelante podremos intercambiar el subsistema haciendo unos pequeños cambios en nuestra subclase sin retocar nada más.&lt;/p></description></item><item><title>Remote WebParts Install</title><link>http://blog.romheat.net/posts/2006/06_02_23_remote_webparts_install/</link><pubDate>Thu, 23 Feb 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_02_23_remote_webparts_install/</guid><description>&lt;p>El otro día chateando con Gustavo sobre su post (Un VisualStudio 2005 señor? No gracias, déme un 2003, por favor) hablamos sobre la instalación de los webparts en las maquinas de pruebas. Yo le comente que lo que hacía era copiar el archivo CAB en la máquina remota y ejecutar el stsadm y el RecycleAppPool usando un enlace de terminal server. (archivo .rdp), esto lo tengo en un batch, y necesito un archivo RDP para cada webpart (ya que el nombre del archivo CAB va dentro del RDP). Luego en el Visual Studio tengo un enlace en las herramientas externas que lanza los comandos.&lt;/p></description></item><item><title>Connecting WebParts</title><link>http://blog.romheat.net/posts/2006/06_02_18_connecting_webparts/</link><pubDate>Sat, 18 Feb 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_02_18_connecting_webparts/</guid><description>&lt;p>He estado pensando en las nuevas características que tendrá la versión 3.5 del csegRollUp (como siempre, si alguien tiene sugerencias que las diga) por el momento dejo unas pequeñas pistas aquí. He estado trabajando con unas bibliotecas de documentos que contiene un meta dato llamado estado, la idea era mostrar los últimos archivos modificados por cada usuario dentro de un estado en particular, bien para esto basta con hacer una vista de la biblioteca de documentos y mostrar la vista organizada en categorías (cada estado una categoría). Esto esta muy bien pero en ocasiones el diseño ha de ser más funcional y esto es lo que ha salido usando el csegRollUp.
El primer csegRollUp va a mostrar un menú con los distintos estados, seleccionando uno de los estados se mostrarán en un segundo csegRollUp los documentos que tienen dicho estado.&lt;/p></description></item><item><title>VS Template WebPart</title><link>http://blog.romheat.net/posts/2006/06_02_13_vs_template_webpart/</link><pubDate>Mon, 13 Feb 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_02_13_vs_template_webpart/</guid><description>&lt;p>Days ago I wrote about how to use msbee to do webparts with Visual Studio 2005, now the toolkit guys have a beta version, I have spent the weekend doing some tests with this beta release and now I’m doing my webparts using Visual Studio 2005. In the beginning I was using the external tools menu to launch the msbuild process with apropiate targets, and later launching other tool with the sign assembly process, finally I have modified the .csproj file because at the moment for SharePoint 2003 I only need use the Net 1.1 framework. Also I added at the Postbuild event the sign assembly process.&lt;/p></description></item><item><title>SQL Maintenance</title><link>http://blog.romheat.net/posts/2006/06_02_07_sql_maintenance/</link><pubDate>Tue, 07 Feb 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_02_07_sql_maintenance/</guid><description>&lt;p>Hoy tocaba mantenimiento del Servidor SQL, revisión de espacio, compactación de bases de datos etc… (cosas del primer martes de cada mes) en fin una vez más nuestro portal crece desmesuradamente sobre todo el log de transacciones (como ocurre con todas las bbdd que se usan) así que como hoy no tenia nada más interesante que contar aquí quedan algunas de las tsqls que forman parte del pan de mantenimiento (yo prefiero hacerlo a mano, usando un PA en vez de usar el asistente programado, manias)&lt;/p></description></item><item><title>ideseg stats</title><link>http://blog.romheat.net/posts/2006/06_02_01_ideseg_stats/</link><pubDate>Wed, 01 Feb 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_02_01_ideseg_stats/</guid><description>&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/stats-junary-2006-1.gif" alt="ideseg stats">
&lt;img src="http://blog.romheat.net/images/Sharepoint/stats-junary-2006-2.gif" alt="ideseg stats">
&lt;img src="http://blog.romheat.net/images/Sharepoint/stats-junary-2006-3.gif" alt="ideseg stats">&lt;/p></description></item><item><title>Querying an exchange server 2</title><link>http://blog.romheat.net/posts/2006/06_01_26_ajax_exchange/</link><pubDate>Fri, 27 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_26_ajax_exchange/</guid><description>&lt;p>Part 2&lt;/p>
&lt;p>Changing the dav web query, you can get more data (see urn:content-classes:message and Default Exchange Store Namespaces for other namespaces) now to complete the sample the new query is&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#e6db74">&amp;#34;urn:schemas:httpmail:datereceived&amp;#34;&lt;/span>, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;DAV:href&amp;#34;&lt;/span>, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;urn:schemas:httpmail:sendername&amp;#34;&lt;/span>, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;urn:schemas:httpmail:subject&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">FROM&lt;/span> &lt;span style="color:#66d9ef">scope&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;shallow traversal of &amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">WHERE&lt;/span> &lt;span style="color:#e6db74">&amp;#34;DAV:ishidden&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">False&lt;/span> &lt;span style="color:#66d9ef">AND&lt;/span> &lt;span style="color:#e6db74">&amp;#34;DAV:isfolder&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>And to watch the xml results obtained by the query we can modify the checkState function.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-javascript" data-lang="javascript">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">function&lt;/span> &lt;span style="color:#a6e22e">checkState&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (&lt;span style="color:#a6e22e">xmlHttpReq&lt;/span>.&lt;span style="color:#a6e22e">readyState&lt;/span> &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">4&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">divOutput&lt;/span>.&lt;span style="color:#a6e22e">innerText&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">xmlHttpReq&lt;/span>.&lt;span style="color:#a6e22e">ResponseXML&lt;/span>.&lt;span style="color:#a6e22e">xml&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Better than parse DOM to get the results I prefer use XSL, now I can copy the XML results in my favorite XSLT editor and map the data. After I can add the xsl to the page and transform the xml usig it. The final result is as shown in the image.&lt;/p></description></item><item><title>View all folders in Document Libraries</title><link>http://blog.romheat.net/posts/2006/06_01_30_view_all_folders/</link><pubDate>Fri, 27 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_30_view_all_folders/</guid><description>&lt;p>Some time ago I write a post with a little trick to add this “missed” option [&amp;ldquo;View all folders&amp;rdquo; in Document Libraries]. Now I have needed it in all my documents libraries and the best option is as always modify the list schema file.&lt;/p>
&lt;p>Each list definition contains a schema.xml that defines the views, forms, toolbar, and special fields in a list definition. In my production server I have modified the DOCLIB template in “web server extensions\60\TEMPLATE\3082\STS\LISTS\DOCLIB”&lt;/p></description></item><item><title>Querying an exchange server</title><link>http://blog.romheat.net/posts/2006/06_01_27_ajax_exchange_2/</link><pubDate>Thu, 26 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_27_ajax_exchange_2/</guid><description>&lt;p>We can use asynchronous data retrieval, inside of a WebContent webpart, this is a little sample of how to do it.&lt;/p>
&lt;p>Part 1&lt;/p>
&lt;p>Querying an exchange server and retry results inside of sharepoint webpart, this first sample use the Search web dav method using XMLHTTP request (Exchange Store WebDAV Protocol), query the last five elements from user inbox and gets the date received, the sender name and the subject.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">SELECT&lt;/span> &lt;span style="color:#e6db74">&amp;#34;urn:schemas:httpmail:datereceived&amp;#34;&lt;/span>, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;urn:schemas:httpmail:sendername&amp;#34;&lt;/span>, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#e6db74">&amp;#34;urn:schemas:httpmail:subject&amp;#34;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">FROM&lt;/span> &lt;span style="color:#66d9ef">scope&lt;/span>(&lt;span style="color:#960050;background-color:#1e0010">‘&lt;/span>shallow traversal &lt;span style="color:#66d9ef">of&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">‘&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">WHERE&lt;/span> &lt;span style="color:#e6db74">&amp;#34;DAV:ishidden&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">False&lt;/span> &lt;span style="color:#66d9ef">AND&lt;/span> &lt;span style="color:#e6db74">&amp;#34;DAV:isfolder&amp;#34;&lt;/span>&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">False&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/webcontent-exchange-query.gif" alt="">&lt;/p></description></item><item><title>csegRollUp v3.1a</title><link>http://blog.romheat.net/posts/2006/06_01_24_csegrollup_v3_1a/</link><pubDate>Tue, 24 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_24_csegrollup_v3_1a/</guid><description>&lt;p>csegRollUp 3.1a&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegRollUp-v31a.gif" alt="csegRollUp">&lt;/p>
&lt;h2 id="fixes">Fixes&lt;/h2>
&lt;p>– Queries with fields that contains spaces
– Variables in caml queries
– Other minor bugs&lt;/p>
&lt;h2 id="improvements-awaited---">Improvements (awaited :-) )&lt;/h2>
&lt;p>Now there is a new property “From top level” where you can specify the starting point from which the csegrollup would gather the information, this url can be a site or a portal area. The format is an Url format (http://sever/sites/site or http://server/area), Now you can use csegRollUp in an area and rollup content from sites in other areas or others urls, also you can use csegRollUp in a site/subsite and agregate content from a top site.&lt;/p></description></item><item><title>XMLA BI</title><link>http://blog.romheat.net/posts/2006/06_01_21_xmla_bi/</link><pubDate>Sat, 21 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_21_xmla_bi/</guid><description>&lt;p>DIA 1&lt;/p>
&lt;p>Estos días he estado probando algunas cosas con SharePoint, empecé instalando la versión inglesa del Business Scorecard Manager 2005 ya que no aguantaba más de esperar a la versión en castellano (las ayudas por lo menos están pero el programa no), después de instalar los requisitos necesarios en mi maquina de pruebas…&lt;/p>
&lt;p>Probé a instalar el producto … que fallaba estrepitosamente al crear la base de datos :-( probé después con un SQL Server 2000 y me seguía ocurriendo lo mismo, comprobé todos los permisos en uno y otro sitio y tras una hora conseguí que me creará la base de datos. Lo que hice fue instalarla directamente sobre el servidor SQL, instalando las opciones personalizadas diciéndole que no a todo excepto a la base de datos. Bien, ya tenía la BBDD instalada, ahora me quedaba instalar las webparts en el servidor (el resto de componentes de la instalación), no hubo suerte, tras indicar al programa de instalación dónde se encuentra en servidor SQL y el nombre de la BBDD me da un error tal que:&lt;/p></description></item><item><title>Using MSBee</title><link>http://blog.romheat.net/posts/2006/06_01_13_using_msbee/</link><pubDate>Fri, 13 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_13_using_msbee/</guid><description>&lt;p>First I want to give thanks to Josh Ledgard to allow to me test the first CTP of MSBee. With MSBee you can build .NET 1.1 projects using Visual Studio 2005. MSBee is designed to use MSBuild and use a property to set the target framework. MSBee map assembly references from .NET 2.0 assemblies to their .NET 1.1 equivalents.&lt;/p>
&lt;p>Installation and usage&lt;/p>
&lt;p>This first release install unzipping four files in the MSBuild directory. These files contans the NET 1.1 target files and the small msbee.dll. After install you only need open a Visual Studio 2003 project with Visual Studio 2005, locate the project file (.csproj) and insert a line under&lt;/p></description></item><item><title>csegDocLibTools</title><link>http://blog.romheat.net/posts/2006/06_01_10_csegdoclibtools/</link><pubDate>Tue, 10 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_10_csegdoclibtools/</guid><description>&lt;p>I have a stopped project that I want release in the nexts weeks, it’s called csegDocLibTools, this is a webpart to show a explorer like interface in document libraries and adds cut and paste features.&lt;/p>
&lt;ul>
&lt;li>SharePoint – Making document libraries a bit more explorer-like&lt;/li>
&lt;li>SharePoint – Making document libraries a bit more explorer-like – csegDocLibTools&lt;/li>
&lt;/ul>
&lt;p>Now here is the beta release, any feedback get will be great.&lt;/p>
&lt;p>csegDocLibToolsWebPart.zip (26,51 KB)&lt;/p></description></item><item><title>Modify title</title><link>http://blog.romheat.net/posts/2006/06_01_10_mod_title/</link><pubDate>Tue, 10 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_10_mod_title/</guid><description>&lt;p>Lo primero advierto que esta practica no esta del todo recomendada. Pero seguro que en más de una ocasión os habéis encontrado con el problema que supone tener el campo Título pre-configurado por SharePoint, (por lo menos deja cambiarle el nombre) pero no deja de ser una limitación en muchos casos que el tipo predeterminado sea un campo alfanumérico de 255 caracteres.&lt;/p>
&lt;p>La definición en CAML del campo Título es la siguiente:&lt;/p></description></item><item><title>MVP</title><link>http://blog.romheat.net/posts/2006/06_01_05_mvp/</link><pubDate>Thu, 05 Jan 2006 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2006/06_01_05_mvp/</guid><description>&lt;p>Yesterday I got the email. I am very happy and honored to announce that I was awarded Microsoft’s Most Valuable Professional (MVP) for Microsoft Office SharePoint Portal Server. Thanks to everyone who got me nominated. I look forward to continuing to contribute to our community and strive to help it grow.&lt;/p>
&lt;p>Bueno, parece ser que los reyes se han adelantado un día. Muchísimas gracias a todos los que me han nominado, a los que leen este blog y usan mis webparts. Gracias. Espero que este año podamos hacer más cosas interesantes juntos. Una vez más gracias.&lt;/p></description></item><item><title>Sharepoint Access Data</title><link>http://blog.romheat.net/posts/2005/05_12_28_sharepoint_access_data/</link><pubDate>Wed, 28 Dec 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_12_28_sharepoint_access_data/</guid><description>&lt;p>Continuando con el trabajo que estaba realizando en Access necesitaba poder acceder a las listas de SharePoint e ir agregando el contenido a una tabla de SQL Server.&lt;/p>
&lt;p>Como comentaba en el post anterior, por el momento estaba manteniendo una lista de sitios en una tabla de Access, recorriendo dicha tabla cargaba las listas en el SQL Server. Ahora necesito recabar información de los sub-sitios que se encuentran por debajo, con lo cual necesito recuperar las direcciones de dichos sitios para poder cargar los datos en el SQL Server.&lt;/p></description></item><item><title>Sharepoint with Access</title><link>http://blog.romheat.net/posts/2005/05_12_28_access/</link><pubDate>Wed, 28 Dec 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_12_28_access/</guid><description>&lt;p>Estos días he necesitado pasar datos de mi servidor SQL a SharePoint y viceversa, después de realizar algunas pruebas y mientras no tenga el SQL 2005 (el cual permite mediante los servicios de transformación de datos DTS atacar servicios web).&lt;/p>
&lt;p>Con mi SQL 2000 he tratado de hacer un pequeño truco que en otras ocasiones había dado buen resultado, el truco consiste en vincular las tablas a través de Access e incluir dicho archivo en un DTS para pasar los datos, esto no funciona con las tablas vinculadas a SharePoint.&lt;/p></description></item><item><title>CAML XML Editor v1</title><link>http://blog.romheat.net/posts/2005/05_12_18_camleditor_v1/</link><pubDate>Sun, 18 Dec 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_12_18_camleditor_v1/</guid><description>&lt;p>Days ago I showed my last toy project called CAML Editor, this first sketch was only a test application. Now I have the pleasure to announce that the first version is here to stay ;-) .&lt;/p>
&lt;p>• New tabbed interface
• Code completion and folding support in text editor
• CAML code generator completely rewritten
• Many Bugs fixed
• New Validation error interface inside of the editor&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/CAMLEditor-v1-Editor.gif" alt="">
&lt;img src="http://blog.romheat.net/images/Sharepoint/CAMLEditor-v1-Generator.gif" alt="">
&lt;img src="http://blog.romheat.net/images/Sharepoint/CAMLEditor-v1-Preview.gif" alt="">&lt;/p>
&lt;p>You can download it here… CAMLEditor v1.0.zip (246,46 KB)&lt;/p></description></item><item><title>Menus de contexto personalizados</title><link>http://blog.romheat.net/posts/2005/05_12_12_context_menus/</link><pubDate>Mon, 12 Dec 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_12_12_context_menus/</guid><description>&lt;p>Hoy modificando un site (en el que tenía colocada la vista con las plantillas múltiples) he pensado en añadir un pequeño menú para modificar directamente las plantillas de la biblioteca de documentos en vez de crear un nuevo documento usando la plantilla. Finalmente lo he implementado usando el editor de de HTML e introduciendo un menú contextual en cada elemento para poder modificar cada plantilla.&lt;/p>
&lt;p>Como estos días alguien me había comentado que tenia problemas al usar el ctx.HttpRoot, pongo el código de ejemplo aquí sobre como montar el ContextInfo para los menús.&lt;/p></description></item><item><title>CAML XML Editor</title><link>http://blog.romheat.net/posts/2005/05_12_06_caml_xml_editor/</link><pubDate>Tue, 06 Dec 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_12_06_caml_xml_editor/</guid><description>&lt;p>My last project has changed of name, I believe that CAML XML EDITOR will be called.&lt;/p>
&lt;p>Join to workspaces.gotdotnet.com/CAMLEditor&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/CAML-Editor-v0-1.gif" alt="camlxmleditor.gif">&lt;/p>
&lt;p>At the moment he is a simple XML editor that allows simultaneously to publish the code by fragments (use the context menu in editor) that can are validated themselves. Also has a HTML preview to show the HTML code generated.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/CAML-Editor-v0-2.gif" alt="camlxmleditor.gif">&lt;/p>
&lt;p>And a little CAML generator, you can select any CAML then you has the correct XML, if you select a reference in the XML you can expand it using the context menu.&lt;/p></description></item><item><title>Caml Editor</title><link>http://blog.romheat.net/posts/2005/05_12_01_caml_editor/</link><pubDate>Thu, 01 Dec 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_12_01_caml_editor/</guid><description>&lt;p>Para la mayoría de los que trabajamos con SharePoint, el personalizar listas, sitios o áreas usando CAML, seré suave, es un INFIERNO, pero para bien o para mal vamos a tener que convivir con el.&lt;/p>
&lt;p>No quiero entrar en detalles acerca de lo bueno o malo, de lo dificultoso o no que pueda llegar a ser, por que como ya he dicho antes hay que convivir con el. Así que he pensado en ser más tolerante y tratar de solucionar los problemas en la medida de lo posible.&lt;/p></description></item><item><title>XSL Namespaces</title><link>http://blog.romheat.net/posts/2005/05_11_29_xsl_namespaces/</link><pubDate>Tue, 29 Nov 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_11_29_xsl_namespaces/</guid><description>&lt;p>With csegRollUp v3 you can use both namespaces in the xml stylesheet.&lt;/p>
&lt;p>This example use msxsl namespace with a c# script function to transform a date in a month name:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:stylesheet&lt;/span> &lt;span style="color:#a6e22e">xmlns:xsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://www.w3.org/1999/XSL/Transform&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">version=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:msxsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;urn:schemas-microsoft-com:xslt&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">xmlns:utils=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;urn:script-items&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;msxsl:script&lt;/span> &lt;span style="color:#a6e22e">language=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;C#&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">implements-prefix=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;utils&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">&amp;lt;![CDATA[
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> public string GetMonth(string sDate)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> { 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> if (sDate.Length &amp;gt; 0)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> {
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> string[] monthNames = {null , &amp;#34;January&amp;#34; , &amp;#34;February&amp;#34; , &amp;#34;March&amp;#34; , &amp;#34;April&amp;#34;, &amp;#34;May&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> &amp;#34;June&amp;#34;, &amp;#34;July&amp;#34;, &amp;#34;August&amp;#34;, &amp;#34;September&amp;#34;, &amp;#34;October&amp;#34;,
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> &amp;#34;November&amp;#34;, &amp;#34;December&amp;#34;};
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> DateTime d = DateTime.Parse(sDate);
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> return monthNames[d.Month];
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> else 
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> return &amp;#34;(Empty)&amp;#34;;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> ]]&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/msxsl:script&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:output&lt;/span> &lt;span style="color:#a6e22e">method=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;html&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">encoding=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;utf-8&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/Rows/Row&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;li/&amp;gt;&amp;lt;b&amp;gt;&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Title&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&amp;lt;/b&amp;gt;&lt;/span> – &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;utils:GetMonth(Fecha)&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&amp;lt;br/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Link with more info XSLT Stylesheet Scripting using &lt;a href="msxsl:script">msxsl:script&lt;/a>&lt;/p></description></item><item><title>Multiple Templates</title><link>http://blog.romheat.net/posts/2005/05_11_24_multiple_templates/</link><pubDate>Thu, 24 Nov 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_11_24_multiple_templates/</guid><description>&lt;p>I have a site with some document libraries to store documentation based in multiple templates, to save each template in the correct folder, I have created a custom list thats contains the name of the template, the template and the folder where documents created with this tempalte must be stored.&lt;/p>
&lt;p>Name – text – Template name&lt;/p>
&lt;p>Template – hyperlink – The link to the template file&lt;/p>
&lt;p>Folder – text – Folder where the document must be stored (site based path)&lt;/p></description></item><item><title>csegRollUp v3 out</title><link>http://blog.romheat.net/posts/2005/05_11_21_csegrollup_v3/</link><pubDate>Mon, 21 Nov 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_11_21_csegrollup_v3/</guid><description>&lt;p>Finally csegRollUp v3 is here, first I want to give to thanks to all beta testers and and special thanks to Florian Rossmark and Dor Rotman.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegRollUp-v3-properties.gif" alt="">&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Lists – As in previous versions, List of comma delimited values that signify the sites and lists
Format: /site/subsite:ListName, /site/subsite/subsite:ListName&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Fields – As in previous versions, List of comma delimited values with the field names
Format: Title,Text,Comment,User&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Include List Data (new) – If enabled the result xml data contains special fields&lt;/p></description></item><item><title>csegRollUp v3 rc1</title><link>http://blog.romheat.net/posts/2005/05_11_12_csegrollup_v3_rc1/</link><pubDate>Sat, 12 Nov 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_11_12_csegrollup_v3_rc1/</guid><description>&lt;p>I am finishing csegRollUp v3, at the moment some examples….&lt;/p>
&lt;p>1.- Using csegRollUp cell consumer interface.&lt;/p>
&lt;p>Show all documents inside of a document library where Title contains data provider from other webpart.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegRollUp-v3rc1-consumer.gif" alt="">&lt;/p>
&lt;p>Lists: Shared Documents
Fields: ID, LinkFilename,EncodedAbsUrl,Modified,DocIcon,FileRef,Author,Title&lt;/p>
&lt;p>CAML query&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Contains&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;FieldRef&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">&amp;#39;Title&amp;#39;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Value&lt;/span> &lt;span style="color:#a6e22e">Type=&lt;/span>&lt;span style="color:#e6db74">&amp;#39;Text&amp;#39;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>[CellProvider]&lt;span style="color:#f92672">&amp;lt;/Value&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Contains&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Recursive: enabled&lt;/p>
&lt;p>XSLT&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&amp;lt;?xml version=&amp;#39;1.0&amp;#39; encoding=&amp;#39;utf-8&amp;#39;?&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:stylesheet&lt;/span> &lt;span style="color:#a6e22e">version=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;1.0&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">xmlns:xsl=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;http://www.w3.org/1999/XSL/Transform&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:output&lt;/span> &lt;span style="color:#a6e22e">method=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;html&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;table&lt;/span> &lt;span style="color:#a6e22e">class=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;ms-summarycustombody&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;tbody&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:for-each&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Rows/Row&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:sort&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;Modified&amp;#34;&lt;/span> &lt;span style="color:#a6e22e">order=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;descending&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;tr&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;td&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;img&lt;/span> &lt;span style="color:#a6e22e">src=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;/_layouts/images/ic{DocIcon}.gif&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/td&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;td&lt;/span> &lt;span style="color:#a6e22e">width=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;75%&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;a&lt;/span> &lt;span style="color:#a6e22e">href=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;{EncodedAbsUrl}&amp;#34;&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">&amp;#34;LinkFilename&amp;#34;&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/a&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/td&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/tr&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:for-each&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/tbody&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/table&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:template&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/xsl:stylesheet&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>2.- Using csegRollUp cell provider interface&lt;/p></description></item><item><title>Bloqueando campos</title><link>http://blog.romheat.net/posts/2005/05_11_10_bloqueando_campos/</link><pubDate>Thu, 10 Nov 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_11_10_bloqueando_campos/</guid><description>&lt;p>Hace unos días necesitaba bloquear un campo en una lista de sharepoint, esto se puede hacer modificando las páginas newform.aspx y editform.aspx y añadiendo un pequeño script.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#f92672">script&lt;/span> &lt;span style="color:#a6e22e">defer&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// tomar el campo y bloquearlo
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#66d9ef">var&lt;/span> &lt;span style="color:#a6e22e">fld_anotacion&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#a6e22e">frm&lt;/span>.&lt;span style="color:#a6e22e">FieldPost&lt;/span>(&lt;span style="color:#a6e22e">frm&lt;/span>.&lt;span style="color:#a6e22e">FindField&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Anotaci_x00f3_n&amp;#34;&lt;/span>));
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#a6e22e">fld_anotacion&lt;/span>.&lt;span style="color:#a6e22e">readOnly&lt;/span> &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">true&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// poner el foco en el campo descripcion
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#a6e22e">frm&lt;/span>.&lt;span style="color:#a6e22e">FindField&lt;/span>(&lt;span style="color:#e6db74">&amp;#34;Descripci_x00f3_n&amp;#34;&lt;/span>).&lt;span style="color:#a6e22e">FieldFocus&lt;/span>();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&amp;lt;/&lt;span style="color:#f92672">script&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>En este caso en concreto, el campo bloqueado se rellena desde un nuevo formulario (una copia de editform.aspx que he modificado para albergar una nueva zona de webparts y dentro de esta he añadido un data viewer webpart) este formulario se utiliza para rellenar el campo que con los formularios iniciales se encuentra bloqueado.&lt;/p></description></item><item><title>Google Sharepoint</title><link>http://blog.romheat.net/posts/2005/05_11_07_google_sharepoint/</link><pubDate>Mon, 07 Nov 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_11_07_google_sharepoint/</guid><description>&lt;p>Al igual que otros usuarios de SharePoint, en su día me encontré con la limitación que tienen las búsquedas de SharePoint. Por ello desarrolle el csegSearchWebPart, añadiendo funcionalidad extra a las búsquedas del portal.&lt;/p>
&lt;p>Como referencia tome Google, ya que es considerado &amp;ldquo;el mejor buscador del mundo&amp;rdquo;.&lt;/p>
&lt;p>Estos días he pensando en ello, y he llegado algunas conclusiones interesantes.&lt;/p>
&lt;p>Goggle tiene tres grandes rasgos que otros buscadores no tienen:&lt;/p>
&lt;ul>
&lt;li>Cantidad de documentos indexados. (8.000 millones)&lt;/li>
&lt;li>Flexibilidad en las búsquedas.&lt;/li>
&lt;li>Motor de indexación / búsqueda distribuido.&lt;/li>
&lt;/ul>
&lt;p>Y un gran característica que lo diferencia de los demás buscadores&lt;/p></description></item><item><title>SPQuery and Recurrence</title><link>http://blog.romheat.net/posts/2005/05_11_02_spquery_recurrence/</link><pubDate>Wed, 02 Nov 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_11_02_spquery_recurrence/</guid><description>&lt;p>This last long weekend I’m playing with spqery to show recurrent events from one of my lists after spent too many hours and the only think I have got are frustrations.&lt;/p>
&lt;p>The query.ViewAttributes, with RecurrenceRowset=’TRUE’ or with ModerationType=’Moderator’ modifiers are ignored totally.&lt;/p>
&lt;p>My sample query for recurrence without results : (RecurrenceRowset=’TRUE’)&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;DateRangesOverlap&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;FieldRef&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">”EventDate”&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;FieldRef&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">”EndDate”&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;FieldRef&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">”RecurrenceID”&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Value&lt;/span> &lt;span style="color:#a6e22e">Type=&lt;/span>&lt;span style="color:#e6db74">”DateTime”&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Now&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Value&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/DateRangesOverlap&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>``
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Today trying get the pending documents: (ModerationType=’Moderator’)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>```xml	
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Eq&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;FieldRef&lt;/span> &lt;span style="color:#a6e22e">Name=&lt;/span>&lt;span style="color:#e6db74">”_ModerationStatus”&lt;/span> &lt;span style="color:#f92672">/&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;Value&lt;/span> &lt;span style="color:#a6e22e">Type=&lt;/span>&lt;span style="color:#e6db74">”Integer”&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>0&lt;span style="color:#f92672">&amp;lt;/Value&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;/Eq&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;/Where&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After read the wsssdk, there is only a example with “ModerationType” is in “SPModerationInformation” class&lt;/p></description></item><item><title>csegRollUp v3</title><link>http://blog.romheat.net/posts/2005/05_10_27_csegrollup_v3/</link><pubDate>Thu, 27 Oct 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_10_27_csegrollup_v3/</guid><description>&lt;h2 id="csegrollup-v3">csegRollUp v3&lt;/h2>
&lt;ul>
&lt;li>Include List Data flag, if you enable the checkbox the xml data will include the underscore data&lt;/li>
&lt;/ul>
&lt;p>(_ListTitle, _ListUrl, _SiteTitle, _SiteUrl, _ItemId, _ItemUrl, _ItemEdit)&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Queries&lt;/p>
&lt;ul>
&lt;li>CAML Query you can use a caml query to search on each list.&lt;/li>
&lt;li>RowLimit – maximun number of rows to return&lt;/li>
&lt;li>Recursive - the query recursive be made (great for Document Libraries)&lt;/li>
&lt;li>DebugQuery – show the xml from the query&lt;/li>
&lt;/ul>
&lt;p>Special values that you can use on queries:&lt;/p></description></item><item><title>csegSearch Install</title><link>http://blog.romheat.net/posts/2005/05_10_20_csegserach_install/</link><pubDate>Thu, 20 Oct 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_10_20_csegserach_install/</guid><description>&lt;p>1.- Load your search.aspx with http://server/search.aspx&amp;amp;Mode=Edit?PageView=Shared&lt;/p>
&lt;p>2.- Enter in design mode using “Modify Shared Page” menu&lt;/p>
&lt;p>3.- Select the csegSearch Webpart and put it on page&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegSearchInstall-1.gif" alt="">&lt;/p>
&lt;p>4.- Go to the original “Search Results” webpart and modify properties, at the end there is a property called ResultListID, it has a list name, remember the name.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegSearchInstall-2.gif" alt="">&lt;/p>
&lt;p>5.- Now delete the original “Search Results”&lt;/p>
&lt;p>6.- Edit the csegSearch properties and locate the ResultListID, write the same name that the old webpart.&lt;/p></description></item><item><title>csegMiniWiki 2</title><link>http://blog.romheat.net/posts/2005/05_10_11_csegminiwiki_2/</link><pubDate>Tue, 11 Oct 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_10_11_csegminiwiki_2/</guid><description>&lt;p>Jugando con mi nuevo webpart csegMiniWiki, he caído en la cuenta que en la lista de contenido hay ciertos campos ocultos (los que tienen todas las listas) de modo que he cogido mi webpart csegScriptWebPart para examinar la lista y ….&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegMiniWiki_content_entry.gif" alt="">&lt;/p>
&lt;p>Como es lógico están todos los campos ocultos, bien ahora cómo csegMiniWiki puede reemplazar el nombre de un campo por su contenido he probado a ver que pasa y ….&lt;/p></description></item><item><title>csegScript 2</title><link>http://blog.romheat.net/posts/2005/05_09_05_csegscript_2/</link><pubDate>Mon, 05 Sep 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_09_05_csegscript_2/</guid><description>&lt;p>This weekend I have finished the first version of csegScript, now are two webparts in the package, the first webpart is the 0.99 version with some improvements in the code, the operation basically is the same one. (See previous post)&lt;/p>
&lt;p>The second new webpart uses a list to store the scripts, and has three slots to pass parameters to the webpart. (Thanks to Stramit by your idea)&lt;/p>
&lt;p>The list fields are:&lt;/p></description></item><item><title>csegDocLib</title><link>http://blog.romheat.net/posts/2005/05_08_10_csegdoclib/</link><pubDate>Wed, 10 Aug 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_10_csegdoclib/</guid><description>&lt;h2 id="introducing-csegdoclibtools">Introducing csegDocLibTools&lt;/h2>
&lt;p>The past week, looking how to show the missing folder view in document libraries, I had a good idea about how to improve my documents libraries, in this moment I had a clear idea over three things:&lt;/p>
&lt;p>&lt;strong>First&lt;/strong> I needed Copy and Paste documents in the library, because this is an essential feature to organize the library. There is a good solution to do from Syntergy, they have a cut and pase webpart.&lt;/p></description></item><item><title>csegDocLib 2</title><link>http://blog.romheat.net/posts/2005/05_08_10_csegdoclib2/</link><pubDate>Wed, 10 Aug 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_10_csegdoclib2/</guid><description>&lt;h2 id="csegdoclibtools-properties">csegDocLibTools properties&lt;/h2>
&lt;p>Well, there is a preliminary version available, I’m testing it in my production machine and the result at the moment its perfect.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegDocLibTools-Beta-screen.gif" alt="">&lt;/p>
&lt;p>The properties are separated in two groups, the first group, contains the document library on which it works and the webpart if this is attached to one.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegDocLibTools-Beta-Prop1.gif" alt="">
&lt;img src="http://blog.romheat.net/images/Sharepoint/csegDocLibTools-Beta-Prop2.gif" alt="">&lt;/p>
&lt;p>The second group contains the webpart options. The four new options in the context menu, (Copy, Paste, Explore from here and Explore from root). There is also an option to show the files inside of the folder when the tree view is showed and an option to enable and disable the top menu.&lt;/p></description></item><item><title>View all folders in Document Libraries</title><link>http://blog.romheat.net/posts/2005/05_08_03_view_all_folders_in_libs/</link><pubDate>Wed, 03 Aug 2005 22:54:52 +0000</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_03_view_all_folders_in_libs/</guid><description>&lt;p>There are things that I do not understand (too many) of SharePoint, today I have paid attention in the actions menu in image libraries, there is an action called “View all Folders” that not exist in document libraries, trying to solve this problem, I have had the idea to how to do a pretty webpart to &lt;strong>Copy and Paste&lt;/strong> documents in documents libraries (this is in mind).&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/ImgLibActions.gif" alt="">        
&lt;img src="http://blog.romheat.net/images/Sharepoint/DocLibActions.gif" alt="">&lt;/p>
&lt;p>But, first les us solve the problem of view all folders in document libraries. I have spent an interesting short time  while seeing as the pages generated by sharepoint work, and there is an stupid trick to solve the problem.  It is enough with adding a link with javascript.&lt;/p></description></item><item><title>csegRollUp to support pages</title><link>http://blog.romheat.net/posts/2005/05_08_03_csegrollup_pages/</link><pubDate>Wed, 03 Aug 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_03_csegrollup_pages/</guid><description>&lt;p>Yesterday looking a XML editor to edit complex xml files that I have in a Project that E&amp;amp;Y did in my company, I downloaded a trial version from  &lt;a href="https://web.archive.org/web/20080613230259/http://www.ideseg.com/ct.ashx?id=d0576f81-0201-43f7-a89b-a56738e28f14&amp;amp;url=http%3a%2f%2fwww.stylusstudio.com%2findex.html" target="_blank">Stylus Studio &lt;strong>XML&lt;/strong> IDE&lt;/a> and I’m really surprised.  We could make a hard work in minutes. (Edit the data in a grid, sort the grid by levels and sublevels  etc&amp;hellip;)&lt;/p>
&lt;p>Normally I dont need tools like this for my diary work but I am considering this for my personal use (home edition is only 49$.)&lt;/p></description></item><item><title>csegSearch update and TIP</title><link>http://blog.romheat.net/posts/2005/05_08_03_csegsearch_update_tip/</link><pubDate>Wed, 03 Aug 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_03_csegsearch_update_tip/</guid><description>&lt;p>Some users have reported some small errors with csegSearch, and some doubts,&lt;/p>
&lt;p>- the colorize results only runs in the first set of results (&lt;strong>fixed&lt;/strong>) &lt;br>
- some extended results are in incorrect site (&lt;strong>fixed&lt;/strong>)&lt;/p>
&lt;p>Try this new version (with care this is not the 1.2 final), first uninstall previous version&lt;/p>
&lt;p>&lt;a href="https://web.archive.org/web/20080214110229/http://www.ideseg.com/ct.ashx?id=0ce0b11d-750b-4580-9842-25cd57e07251&amp;amp;url=http%3a%2f%2fwww.ideseg.com%2fcontent%2fbinary%2fcsegSearchWebPart12.zip" target="_blank">csegSearchWebPart12.zip (11,45 KB)&lt;/a>&lt;/p>
&lt;p>&lt;em>stsadm –o deletewppack –name csegSearchWebPart.cab&lt;br>
iisreset&lt;/em>&lt;/p>
&lt;p>&lt;em>Stsadm –a addwppack –filename csegSearchWebPart.cab [-globalinstall –force]&lt;br>
iisreset&lt;/em>&lt;/p>
&lt;p>Plase use the forums to comment bugs and the doubts in &lt;a href="https://web.archive.org/web/20080214110229/http://www.ideseg.com/ct.ashx?id=0ce0b11d-750b-4580-9842-25cd57e07251&amp;amp;url=http%3a%2f%2fforos.ideseg.com" target="_blank">foros.ideseg.com&lt;/a>&lt;/p></description></item><item><title>cssegScriptWebPart</title><link>http://blog.romheat.net/posts/2005/05_08_03_csegscriptwebpart/</link><pubDate>Wed, 03 Aug 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_03_csegscriptwebpart/</guid><description>&lt;p>Imagine test your webparts without compile, imagine an VBA for sharepoint, that was what I imagined yesterday and this is here&amp;hellip; I have desire to say Yeahhhhh&lt;/p>
&lt;p>&lt;strong>Screenshoots&lt;/strong> (better an image than thousand words)&lt;/p>
&lt;p>csegScript showing code&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegScript1.gif" alt="">&lt;/p>
&lt;h2 id="properties">Properties&lt;/h2>
&lt;p>&lt;strong>Show Code&lt;/strong> – Show the code with line numbers to identificate errors&lt;br>
&lt;strong>Run Code&lt;/strong> – The code is executed when you applies changes&lt;br>
&lt;strong>Script References&lt;/strong> – Write here the references of the project (.dll files)&lt;/p></description></item><item><title>Load documents in SharePoint pages</title><link>http://blog.romheat.net/posts/2005/05_08_03_load_documents_in_sp_pages/</link><pubDate>Wed, 03 Aug 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_03_load_documents_in_sp_pages/</guid><description>&lt;p>SharePoint - Loading html documents inside of sharepoint pages
One of the problems that I have been is when I have html documents in a document library and show this in a webpart page with the webcontent webpart. (I’m using the csegContent webpart that gets a querystring)&lt;/p>
&lt;p>Sharepoint index them and after when you search, the query results show a link to them but when you load the document the context is missing, you have a window with the complete page without menu, quicklaunch etc…&lt;/p></description></item><item><title>Playing with csegScriptWebPart</title><link>http://blog.romheat.net/posts/2005/05_08_03_playing_csegscript/</link><pubDate>Wed, 03 Aug 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_08_03_playing_csegscript/</guid><description>&lt;p>SharePoint - Playing with csegScript
Some users of csegRollUp2 ask to me how to get the complete list of fields for a list, remember that you can use the internal names with csegRollUp. Now you can use csegScript to show all fields and types of any list.&lt;/p>
&lt;p>Change the red code with the name of your list, and put the webpart in the site where the list is stored.&lt;/p>
&lt;p>Begin Script Code&lt;/p></description></item><item><title>csegAlertMan</title><link>http://blog.romheat.net/posts/2005/05_07_26_csegalertman/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_csegalertman/</guid><description>&lt;p>I am working in three webparts for handling alerts in Sharepoint, as advance here is first of them. &lt;/p>
&lt;p>&lt;strong>csegUserListsAlerts&lt;/strong>&lt;/p>
&lt;p>This webpart shows&lt;/p>
&lt;ol>
&lt;li>A drop-down list with all the lists of the Web site in where it is located. &lt;/li>
&lt;li>The name of the current user&lt;/li>
&lt;li>One lists with all the users of the Web site&lt;/li>
&lt;li>The alerts for the selected list&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/o_csegUserListAlerts.gif" alt="o_csegUserListAlerts.gif">&lt;/p>
&lt;p>You can do:&lt;/p>
&lt;p>Eliminate the selected alert&lt;br>
Eliminate all alerts for the current list&lt;br>
Add alert to selected users (specify type and frecuency)&lt;br>
Add alerts to all users&lt;/p></description></item><item><title>csegRollUp aggregate in calendar view</title><link>http://blog.romheat.net/posts/2005/05_07_26_csegrollup_calendar/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_csegrollup_calendar/</guid><description>&lt;p>First, thanks to all by the comments about RollUp webpart.&lt;/p>
&lt;p>Now, do you need a Calendar view with your RollUp events, tasks or any list???&lt;/p>
&lt;p>Are you ready?.&lt;/p>
&lt;p>You can use the Sharepoint calendar whith csegRollUp it’s easy and you can view the Month view, weekly view or day view whit your aggregated data.&lt;/p>
&lt;p>Just, a sample of XSL to render.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">&amp;lt;&lt;/span>?xml version=’1.0′ encoding=’utf-8′?\&amp;gt; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:stylesheet&lt;/span> &lt;span style="color:#a6e22e">version=&lt;/span>&lt;span style="color:#e6db74">“1.0″&lt;/span> &lt;span style="color:#a6e22e">xmlns:xsl=&lt;/span>&lt;span style="color:#e6db74">“http://www.w3.org/1999/XSL/Transform”\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:output&lt;/span> &lt;span style="color:#a6e22e">method=&lt;/span>&lt;span style="color:#e6db74">“html”/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">&amp;lt;xsl:template&lt;/span> &lt;span style="color:#a6e22e">match=&lt;/span>&lt;span style="color:#e6db74">“/”\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>       &lt;span style="color:#f92672">&amp;lt;SCRIPT&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>       var dopt = new DateOptions;       
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dopt.chDateSep = “/”;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dopt.chTimeSep = “:”;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dopt.SetTimeFormat(1);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dopt.SetDateOrder(1);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dopt.SetDOW(0);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> dopt.webTZOffsetMin = -60;       
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> var cal = new Calendar(null, null, dopt);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> var rgIcons = new Array;    
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rgIcons\[0\] = “\\u003cIMG border=0 width=16 height=16 title=\\u0022\\u0022 SRC=\\u0022/\_layouts/images/blank.gif\\u0022\\u003e”;    
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rgIcons\[1\] = “\\u003cIMG alt=\\u0022\\u0022 border=0 width=16 height=16 SRC=\\u0022http://srvsp/\_layouts/images/blank.gif\\u0022″;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">&amp;lt;xsl:for-each&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">“Rows/Row”\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘datetime’&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘Caduca’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘year’&lt;/span>  &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘substring(&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$datetime,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">7&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">4&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">)’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘month’&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘substring(&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$datetime,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">4&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">2&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">)’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘day’&lt;/span>   &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘substring(&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$datetime,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">1&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">2&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">)’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘hour’&lt;/span>  &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘substring(&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$datetime,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">1&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">1&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">)’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘minute’&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘substring(&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$datetime,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">4&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">2&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">)’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘second’&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘substring(&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$datetime,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">7&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">2&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">)’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span> 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             &lt;span style="color:#f92672">&amp;lt;xsl:variable&lt;/span> &lt;span style="color:#a6e22e">name=&lt;/span>&lt;span style="color:#e6db74">‘spdate’&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">“concat($year,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">‘-’,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$month,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">‘-’,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$day,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">‘T0′,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$hour,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">‘:’,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$minute,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">‘:’,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">$second,&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">‘Z’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">)”&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>             cal.AddFullEvent(“&lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘$spdate’&lt;/span> &lt;span style="color:#960050;background-color:#1e0010">/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>“, 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ”&lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">‘$spdate’/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>“,                                          
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ”&lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">“Texto”/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>“,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ”&lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">“Título”/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>“,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ”&lt;span style="color:#f92672">&amp;lt;xsl:value-of&lt;/span> &lt;span style="color:#a6e22e">select=&lt;/span>&lt;span style="color:#e6db74">“\_ItemUrl”/\&lt;/span>&lt;span style="color:#f92672">&amp;gt;&lt;/span>“,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rgIcons);          
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#960050;background-color:#1e0010">&amp;lt;&lt;/span>/xsl:for-each\&amp;gt; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>        cal.BuildUI();        
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#960050;background-color:#1e0010">&amp;lt;&lt;/span>/SCRIPT\&amp;gt;     
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#960050;background-color:#1e0010">&amp;lt;&lt;/span>/xsl:template\&amp;gt; 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">&amp;lt;&lt;/span>/xsl:stylesheet\&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="result-screenshots">Result Screenshots&lt;/h2>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/o_csegRollUp-cal1.gif" alt=""> &lt;/p></description></item><item><title>csegRollUp expand collapse</title><link>http://blog.romheat.net/posts/2005/05_07_26_csegrollup_expand_collapse/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_csegrollup_expand_collapse/</guid><description>&lt;p>Some people ask me about samples of transformations, XSL to use with the csegRollUp webpart. First of all, I adopted XSL because it is the best way to customize any webpart.&lt;/p>
&lt;p>I’m using mainly XMLSpy in work, but those days in my laptop I’m using too a freeware application to edit XSL called &amp;ldquo;cooktop&amp;rdquo; written by Victor Pavlov, it is a xsl, xpath and dtd editor, you can use the XML debug output from csegRollUp and test your XSL.&lt;/p></description></item><item><title>csegRollUp webpart</title><link>http://blog.romheat.net/posts/2005/05_07_26_csegrollupwebpart/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_csegrollupwebpart/</guid><description>&lt;p>This is my new webpart, that I have worked in order to solve a common problem. The Rollup for Sharepoint lists.&lt;/p>
&lt;p>With this webpart you can rollup any list in any site, you can get data from different lists (Tasks, Announcements, your customs lists)&lt;/p>
&lt;p>The Webpart check the security so that if a user does not have access to a site or a list these data will not appear.&lt;/p>
&lt;p>Webpart gathers data from the specified lists and join it in a common xml that later will render it using xsl.&lt;/p></description></item><item><title>csegRollUp webpart v2</title><link>http://blog.romheat.net/posts/2005/05_07_26_csegrollupwebpart_v2/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_csegrollupwebpart_v2/</guid><description>&lt;p>First, once again many thanks to all you for your kind commentaries about csegRollUp.&lt;/p>
&lt;p>Sorry for being so late but I have had a lot of work last days, and nights are so short…&lt;/p>
&lt;h2 id="fixes">Fixes&lt;/h2>
&lt;p>For users with problems in sites with ports diferents to 80, I must say that all tests of this new version have been done with a server installed in the port 1000 and all them have run correctly.&lt;/p></description></item><item><title>csegSearch 1.1</title><link>http://blog.romheat.net/posts/2005/05_07_26_csegsearch_1_1/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_csegsearch_1_1/</guid><description>&lt;p>Buff, finally csegSearch 1.1&lt;/p>
&lt;p>Thanks to Henrik, Raphael, André, Klaus and Mario for your comments.&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Sharepoint/csegSearchResults.gif" alt="">&lt;/p>
&lt;h2 id="fixedimprovements">Fixed/Improvements&lt;/h2>
&lt;ul>
&lt;li>Add support to display custom attributes in results view.&lt;/li>
&lt;li>Fix the query string parameters&lt;/li>
&lt;li>Fix empty Hilight color&lt;/li>
&lt;li>Hilight keywords in document title and author&lt;/li>
&lt;li>Parser optimization and autofix &lt;/li>
&lt;/ul>
&lt;h2 id="operation">Operation&lt;/h2>
&lt;p>Webpart will transform the keywords into sharepoint joining  the words with the nexus AND as in google.  Internally csegSearch uses a parser engine that tries to correct the syntax of queries.&lt;/p></description></item><item><title>csegSearchWebPart</title><link>http://blog.romheat.net/posts/2005/05_07_26_csegsearchwebpart/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_csegsearchwebpart/</guid><description>&lt;h1 id="csegsearch--adds-google-type-searches-to-your-sharepoint-site--boolean-searches">csegSearch – Adds google type searches to your Sharepoint site – boolean searches&lt;/h1>
&lt;p>This webpart allows to make searches &lt;strong>GOOGLE&lt;/strong>  type in sharepoint.&lt;/p>
&lt;p>In the first place I would like to thank  Mattiew Cosier since to a large extent I have been inspired by his work. And Gustavo to test the webpart in your systems.&lt;/p>
&lt;p>This webpart is a subclass of the webpart included in sharepoint called SearchResults. Baically, csegSearch   transforms the keywords and  gives them the correct syntax to be used with the predicate CONTAINS of the Sharepoint searches..&lt;/p></description></item><item><title>Loading pages in an iframe</title><link>http://blog.romheat.net/posts/2005/05_07_26_loading_in_iframe/</link><pubDate>Tue, 26 Jul 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_07_26_loading_in_iframe/</guid><description>&lt;p>Uno de los problemas con los que me he encontrado cuando se cargan documentos html en una biblioteca de documentos es que cuando Sharepoint indexa el contenido de dichos documentos, al cárgalos  se pierde toda la estética del portal, esto también ocurre cuando abrimos los documentos desde una biblioteca de documentos.&lt;/p>
&lt;p>&lt;img src="https://web.archive.org/web/20080216182515im_/http://www.ideseg.com/content/binary/r_SharepointIFrameContent.jpg" alt="">&lt;/p>
&lt;p>Por lo general estos documentos los cargamos dentro de un webpart de contenido para que el usuario pueda navegar por estas páginas de manera que lo ideal sería que el documento se visualizará en el site del cual proviene.&lt;/p></description></item><item><title>Sharepoint – csegWebContent webpart</title><link>http://blog.romheat.net/posts/2005/05_05_26_csegwebcontent_webpart/</link><pubDate>Thu, 26 May 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_05_26_csegwebcontent_webpart/</guid><description>&lt;p>This weekend I have been working in some improvements of the page viewer webpart and this is the result&lt;/p>
&lt;p>&lt;strong>New features&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Control height of webpart&lt;/li>
&lt;li>ICellConsummer Interface (to get an URL from another webpart)&lt;/li>
&lt;li>AutoLoad if main page pass an URL in Load param&lt;/li>
&lt;/ul>
&lt;h2 id="control-height">Control height.&lt;/h2>
&lt;p>This webpart use all client height area by default less  115 pixels used by site header. You can adjust this in the cssWebContent properties.&lt;/p></description></item><item><title>Talking SOAP Sharepoint</title><link>http://blog.romheat.net/posts/2005/05_05_10_talking_soap_sharepoint/</link><pubDate>Tue, 10 May 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_05_10_talking_soap_sharepoint/</guid><description>&lt;p>Outlook integration with Sharepoint, is not bad, but it could be better. Sharepoint Event and Contact lists has a decent integration in Sharepoint, but when I create a new customized list, I don´t have any link to Outlook.&lt;/p>
&lt;p>Thinking about this, I need to be able to pass data of my customized forms in outlook to sharepoint and viceversa.&lt;/p>
&lt;p>Working arround the problem, I have created a Outlook form with such fields that one of my sharepoint list, now the problem is how to send this form data from Outlook to Sharepoint. After creating the form the only thing that it knew clearly it was that it had to use the Web services of sharepoint to send the data.&lt;/p></description></item><item><title>csegPSSearch webpart</title><link>http://blog.romheat.net/posts/2005/05_05_09_csegpssearch_webpart/</link><pubDate>Mon, 09 May 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_05_09_csegpssearch_webpart/</guid><description>&lt;h2 id="sharepoint--csegpssearch-webpart">Sharepoint – csegPSSearch webpart&lt;/h2>
&lt;p>csegPSSearch is a webpart to include custom web sharepoint queries in your portal in a easy way. First, you need to be familiarized with the PSSearch syntax (&lt;a href="https://web.archive.org/web/20160423181639/http://www.microsoft.com/downloads/details.aspx?FamilyID=D6A10783-A4E4-4463-8444-F88BE48760B3&amp;amp;displaylang=en" target="_blank">Sharepoint query syntax&lt;/a>)&lt;/p>
&lt;h2 id="properties">properties&lt;/h2>
&lt;ul>
&lt;li>&lt;em>PSSearch Query&lt;/em>: Your custom query.&lt;/li>
&lt;li>&lt;em>XSL&lt;/em>: The xsl to render the results.&lt;/li>
&lt;li>&lt;em>MaxRows:&lt;/em> Maximun number of rows to return by the query.&lt;/li>
&lt;li>&lt;em>DebugXML&lt;/em>: If checked show the xml results.&lt;/li>
&lt;li>&lt;em>DebugQuery:&lt;/em> Show the query.&lt;/li>
&lt;/ul>
&lt;p>The query has an special value %TEXT% that it can be replaced if the webpart is connected to another webpart with a cell provider interface. Included with this webpart there is a simple webpart with a input box provider interface called csegInputBoxProvider. You can connect both webparts to make your custom queries.&lt;/p></description></item><item><title>SharePoint on PocketPC</title><link>http://blog.romheat.net/posts/2005/05_04_27_sharepoint_pocketpc/</link><pubDate>Wed, 27 Apr 2005 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2005/05_04_27_sharepoint_pocketpc/</guid><description>&lt;h2 id="sharepoint--pocketpc-sharepoint-list-explorer">Sharepoint – PocketPc sharepoint list Explorer&lt;/h2>
&lt;p>I am doing a Pocket PC application to show in the today screen the list content of some lists of my sharepoint server and update it each x minuts.&lt;/p>
&lt;p>Before beginning the development I have made a small example that is interesting similarity to me to place here with the source code since it can be interesant for other developers.&lt;/p>
&lt;p>This simple application, needs the user credentials and the direction of the web service to use, shows all lists available and later it shows the content of the list selected in a datagrid.&lt;/p></description></item><item><title>Sun Ultra</title><link>http://blog.romheat.net/posts/2003/03_10_01_sun_ultra/</link><pubDate>Wed, 01 Oct 2003 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2003/03_10_01_sun_ultra/</guid><description>&lt;h2 id="enredadndo-con-la-sun-ultra-1">Enredadndo con la Sun Ultra 1&lt;/h2>
&lt;p>Estas son algunas notas que he ido tomando mientras jugueteaba con una Sun Ultra 1 que adquirí recientemente en ebay por un módico precio (60€). La Ultra 1 será durante estos día mi juguetito (como yo lo llamo).&lt;/p>
&lt;p>&lt;strong>La Maquina.&lt;/strong>&lt;/p>
&lt;p>&lt;img src="http://blog.romheat.net/images/Enredadndo%20con%20la%20Sun%20Ultra%201%20-%20(code%20segment)/Sun_Ultra_1_frontal.jpg" alt="">&lt;/p>
&lt;p>Bueno, por comprar barato, la maquina solo tiene 64Mb (veremos lo que da de si) y no tiene disco duro ni CDROM, con lo que tendré que volver a ebay para agenciarme un disco SCSI 3 con conector SCA.&lt;/p></description></item><item><title>Palm</title><link>http://blog.romheat.net/posts/2003/03_02_15_palm/</link><pubDate>Sat, 15 Feb 2003 00:00:00 +0100</pubDate><guid>http://blog.romheat.net/posts/2003/03_02_15_palm/</guid><description>&lt;p>&lt;strong>From my old blog posted on Sat 15/02/2003&lt;/strong>&lt;/p>
&lt;p>I have a Palm m505. It&amp;rsquo;s a great little device. I use it for keeping track of my schedule, contacts, and to-do lists. I also use it to read e-books and play games. I&amp;rsquo;ve had it for about a year now, and I&amp;rsquo;m still finding new uses for it. I&amp;rsquo;ve even written a few programs for it. It&amp;rsquo;s amazing how much you can do with such a small device. I highly recommend it to anyone who needs to keep track of their schedule, contacts, and to-do lists. It&amp;rsquo;s a great little device.&lt;/p></description></item></channel></rss>